<分区>
Possible Duplicate:
What is the “??” operator for?
请解释一下“??”的用途在下面的代码中,什么是“??”用于。
if ((this.OrderDate ?? DateTime.MinValue) > DateTime.Today)
{ e.Description = "订单日期不能在未来。"; 返回假;
以上代码位于http://nettiers.com/EntityLayer.ashx
谢谢。
<分区>
Possible Duplicate:
What is the “??” operator for?
请解释一下“??”的用途在下面的代码中,什么是“??”用于。
if ((this.OrderDate ?? DateTime.MinValue) > DateTime.Today)
{ e.Description = "订单日期不能在未来。"; 返回假;
以上代码位于http://nettiers.com/EntityLayer.ashx
谢谢。
最佳答案
(这是重复的,但很难搜索,所以我很高兴为以后的搜索提供更多的另一个目标......)
这是null-coalescing operator .本质上,它计算第一个操作数,如果结果为空(空引用或可为空值类型的空值),则它计算第二个操作数。结果是最后有效评估的操作数。
请注意,由于其关联性,您可以这样写:
int? x = E1 ?? E2 ?? E3 ?? E4;
如果 E1
、E2
、E3
和 E4
都是 int?
- 它将以 E1
开始并继续前进,直到找到一个非空值。
第一个操作数必须是可空类型,但第二个操作数可以是不可空的,在这种情况下,整个表达式类型是不可空的。例如,假设 E4 是 int
类型的表达式(但所有其他表达式仍然是 int?
那么您可以使 x
不可为空:
int x = E1 ?? E2 ?? E3 ?? E4;
关于c# - "??"有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3862347/