c# - "??"有什么用

标签 c# asp.net .nettiers

<分区>

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;

如果 E1E2E3E4 都是 int? - 它将以 E1 开始并继续前进,直到找到一个非空值。

第一个操作数必须是可空类型,但第二个操作数可以是不可空的,在这种情况下,整个表达式类型是不可空的。例如,假设 E4 是 int 类型的表达式(但所有其他表达式仍然是 int? 那么您可以使 x 不可为空:

int x = E1 ?? E2 ?? E3 ?? E4;

关于c# - "??"有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3862347/

相关文章:

c# - 在wpf中绘制双线

c# - UnixEpochDateTimeConverter - 无法获取 token 类型 'Number' 的值作为字符串

asp.net - 可承受1000个并发用户,25毫秒响应的web服务

javascript - 使用客户端页面上的信息从外部填充数据库

design-patterns - 用于高可扩展网站的 ASP.NET ORM

c# - 在 C# 中样式化 KML 文件

c# - 找不到引用契约(Contract) :connect to WCF endpoint through Powershell cmdlet 的默认终结点元素

asp.net - ASPX和ASCX之间的事件

c# - Inner 与 NetTiers 结合

c# - 关于修改 NetTiers 的建议