C# 下面的空条件运算符有什么问题?

C# 下面的空条件运算符有什么问题?,c#,nullable,c#-6.0,C#,Nullable,C# 6.0,你怎么了 public int Add(int? a, int? b) { return (a?.0 + b?.0); } 编译错误:无法将类型“int”隐式转换为“bool” 只是想体验一下用C#6.0的方式添加两个可为null的整数的滋味 我也知道其他方法(如hasvalue等),但我正在试验这个新操作符。首先,x?.0在x是int?时没有任何意义0不是int?上的属性或方法 似乎您试图使用空合并运算符?而不是空条件操作?。。如果是这种情况,您的方法应该如下所示: public i

你怎么了

public int Add(int? a, int? b)
{
    return (a?.0 + b?.0);
}
编译错误:无法将类型“int”隐式转换为“bool”

只是想体验一下用C#6.0的方式添加两个可为null的整数的滋味


我也知道其他方法(如hasvalue等),但我正在试验这个新操作符。

首先,
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?
):

但是,如果您只想将这些
int?
参数组合在一起,则不需要任何新的参数。这只会起作用:

public int? Add(int? a, int? b)
{
    return (a + b);
}

当两个参数都不是
null
时,这两个选项都将返回一个结果,否则它将返回
null

空条件运算符是
(即使它只是
用于可空类型)<代码>?已用于三元运算符。请查看此新运算符。错误消息很有趣。。。为什么它试图将值转换为
bool
?此方法的正确实现应该是
返回a??0+b??0
@DarrenYoung感谢您直截了当地解释了术语。我仍然喜欢把它看作是一个条件。在任何情况下,问题的代码片段都是错误的;-)好啊更有趣的问题。。。为什么错误
无法将类型“int”隐式转换为“bool”
?不应该是
int不包含
0`或类似的定义吗?第二次添加的结果可能不同
null+null
=
null
,和
x+null==null
,而他的方法是
null+5==5
@xanatos为什么你认为它会返回
null+5==5
?我想他是指
a?.0
类似
a的东西??0
,所以
null+5==0+5
,因为
.0
是浮点文本,所以它将
视为标记,而不是
public int? Add(int? a, int? b)
{
    return (a + b);
}