pri*_*kar 5 c# nullable c#-6.0
出什么问题了
public int Add(int? a, int? b)
{
return (a?.0 + b?.0);
}
Run Code Online (Sandbox Code Playgroud)
编译错误:无法隐式转换类型'int?' 'bool'
只是尝试以C#6.0的方式获得添加两个可空整数的味道.
我也知道其他方式(比如hasvalue等),但我正在试验这个新的运算符.
i3a*_*non 11
好吧,首先x?.0,当并不意味着什么x是int?.0不是财产或方法int?.
看起来好像你试图使用null合并运算符??而不是null条件运算?..如果是这种情况,您的方法应如下所示:
public int Add(int? a, int? b)
{
return a ?? 0 + b ?? 0;
}
Run Code Online (Sandbox Code Playgroud)
如果情况并非如此,?.那么您可以使用扩展方法测试此运算符int,只返回其值:
public static int Identity(this int value)
{
return value;
}
Run Code Online (Sandbox Code Playgroud)
并按原样尝试使用它(但有int?):
public int? Add(int? a, int? b)
{
return a?.Identity() + b?.Identity();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您只想将这些int?参数组合在一起,则不需要任何新内容.这只是工作:
public int? Add(int? a, int? b)
{
return (a + b);
}
Run Code Online (Sandbox Code Playgroud)
当两个参数都没null有时,两个选项都将返回结果,否则它将返回null.