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);
}