我在一段代码中看到了这一点,并想知道是否有人可以帮我澄清这一点。
public string MethodName(string str, int? x = null)
{
if(x != null)
{
....
}
}
第二个函数参数是我困惑的地方:
int? x = null
我知道Nullable类型,但我对这里的语法感到困惑,我以前从未见过这个。为什么有" = null"在输入参数?我读它的方式是将x设置为null,如果因为x总是为空,它将永远不会达到第一个。
答案 0 :(得分:3)
INT? x = null是默认参数或可选参数。
当你将值传递给函数时,它将是
MethodName(str,value);
x = value ;
否则:
MethodName(str);
x = null;
所以,你有两种方法来调用这个函数。使用此类型来声明方法,可选参数必须放在最后一个。
答案 1 :(得分:2)
这意味着它给出参数x是一个可选值,以防对方法的调用没有为它提供值。
您也可以对任何类型的参数执行此操作。
对MethodName方法的有效调用:
string str = "";
int? x = 1;
MethodName(str); //this will work even you only supply the string parameter;
MethodName(str, x);
答案 2 :(得分:2)
设置x的默认值。 Ints不可为空,所以
int = null
无效。因此,如果没有?类型。
此外,可以更改此值。例如:
//x will be equal to null
MethodName("string")
//x will be equal to 5
MethodName("string", x: 5)
希望有意义
答案 3 :(得分:2)
这意味着您可以通过两种方式调用此函数:
var result = MethodName("X", 5);
或
var result = MethodName("X");
如果您没有通过第二个参数,它将使用默认值(在这种情况下为null
)。
答案 4 :(得分:2)
方法中签名x
是optional parameter,这意味着如果您不想更改参数的默认值,则可以省略此参数。
请考虑以下对此函数的调用。
使用两个参数调用1 :
MethodName("AValue",10); // str = AValue and x=10
致电2 :跳过可选参数
MethodName("AValue"); // str = AValue and x=null
注意: -
要定义可选参数,您应该为其指定默认值 该参数,如果未在函数调用中指定 将采用默认值。