有什么问题
public int Add(int? a, int? b)
{
return (a?.0 + b?.0);
}
编译错误:无法隐式转换类型' int?'到' bool'
尝试以C#6.0的方式尝试添加两个可以为空的整数。
我也知道其他方式(比如 hasvalue 等),但我正在试验这个新的运算符。
答案 0 :(得分:11)
当x?.0
是x
时,首先int?
并不意味着什么。 0
上的int?
不是属性或方法。
似乎您尝试使用空合并运算符??
而不是空条件运算?.
。如果是这种情况,您的方法应如下所示:
public int Add(int? a, int? b)
{
return a ?? 0 + b ?? 0;
}
如果情况并非如此,您的意思是?.
,那么您可以使用int
的扩展方法测试此运算符,该方法只返回其值:
public static int Identity(this int value)
{
return value;
}
并按照您原来的尝试使用它(但使用int?
):
public int? Add(int? a, int? b)
{
return a?.Identity() + b?.Identity();
}
但是,如果您只想将这些int?
参数组合在一起,则不需要任何新内容。这只是有效:
public int? Add(int? a, int? b)
{
return (a + b);
}
当两个参数都不是null
时,两个选项都会返回结果,否则会返回null
。