代码之家  ›  专栏  ›  技术社区  ›  Dr. Rajesh Rolen

“?”有什么用??“[副本]

  •  6
  • Dr. Rajesh Rolen  · 技术社区  · 15 年前

    可能重复:
    What is the “??” operator for?

    if ((this.OrderDate ?? DateTime.MinValue) > DateTime.Today)
    

    { e、 Description=“订单日期不能在将来。”;

    以上代码位于 http://nettiers.com/EntityLayer.ashx

    1 回复  |  直到 9 年前
        1
  •  9
  •   Jon Skeet    15 年前

    (这是一个副本,但很难搜索,所以我很高兴为以后的搜索提供更多的另一个目标…)

    这是最重要的 null-coalescing operator . 从本质上讲,它计算第一个操作数,如果结果为null(null引用或可为null的值类型的null值),则计算第二个操作数。结果是最后计算的操作数。

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

    如果 E1 , E2 , E3 E4 所有表达式都是类型 int? -首先是

    第一个操作数必须是可为null的类型,但是第二个操作数可以是不可为null的,在这种情况下,整个表达式类型是不可为null的。例如,假设E4是类型为 int 内景? 那你就可以 x 不可为空:

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