2012-08-10 212 views
5

考虑以下方法示例:C# - 如何使用默认值跳过参数?

public void MyMethod (string par1, bool par2 = "true", string par3="") 
{ 
} 

现在,让我们说,我叫的MyMethod并设置PAR3的值设置为“IamString”。

我怎么能这样做,而没有将par2的值设置为true或false?

我基本上想让par2的值保持默认值。

我问这是因为Flash的ActionScript这是可以做到的,通过使用关键字默认所以我可以调用的MyMethod(“somestring”,默认情况下,“IamString”)和PAR2将被解释为,这是它的默认值。我想知道在C#中是否有可能。

+1

检查http://stackoverflow.com/questions/4630444/how- to-skip-optional-parameters-in-c-sharp – Sandeep 2012-08-10 12:20:17

+1

命名参数:http://msdn.microsoft.com/en-us/library/dd264739.aspx – asawyer 2012-08-10 12:20:51

+0

谢谢Sandeep和asawyer的参考资料。 – IneedHelp 2012-08-10 12:30:23

回答

11
public void MyMethod (string par1, bool par2 = "true", string par3=""){} 
Myclass.MyMethod(par1:"par1", par3:"par3"); 

顺便说一句,这是不行的:bool par2 = "true"

string par2 = "true"

bool par2 = true

谈起默认值,你也可以使用它来获取默认值特定类型:

default(T)

+0

谢谢!是的,你是正确的布尔par2 =“true”将无法正常工作。在尝试布置一个简单的示例时,我做了一个错误。 – IneedHelp 2012-08-10 12:29:19

+0

不客气:-)请不要忘记标记你想要的答案作为答案:) – SeToY 2012-08-10 12:31:19

+0

是的,它只是不让我,因为你最近编辑了你的答案。我将在1分钟内接受它。 – IneedHelp 2012-08-10 12:32:19

9

可以按名称指定此参数:

instance.MyMethod("Hello", par3:"bla"); 

看一看here

而且,还有另一个错误:

bool par2 = true 

是正确的..

+0

谢谢你的回答。 – IneedHelp 2012-08-10 12:29:43

+0

是的没问题:)这就是它的工作原理 – tuxtimo 2012-08-10 12:34:42

+0

你的答案对SeToY来说同样有用,但我会接受他,因为我先发现它。尽管如此,谢谢你,大拇指! – IneedHelp 2012-08-10 12:35:17