【问题标题】:Coalesce with property of nullable object?与可为空对象的属性合并?
【发布时间】:2018-05-30 09:24:04
【问题描述】:

您好,有没有办法制定如下条件? 如果 field 为 null 那么 false else field.Property ?

class Node
{
    public bool IsFilled;
}

class Holder
{
    Node nodeBuffer;
    public bool IsFilled => this.nodeBuffer?.IsFilled ?? false; 
}

我该怎么说if nodeBuffer is null then false else nodeBuffer.IsFilled?

【问题讨论】:

    标签: c# nullable


    【解决方案1】:

    是的,您可以使用与Nullable<bool> 配合使用的equality operator

    public bool IsFilled => this.nodeBuffer?.IsFilled == true;
    

    可空类型支持其不可空类型支持的所有运算符,称为:lifted operator

    【讨论】:

      【解决方案2】:

      this.nodeBuffer?.IsFilled 返回一个Nullable<T>,所以你可以在它上面使用GetValueOrDefault() 方法,所以如果null 它将是false。

      所以您的属性定义如下所示:

      public bool IsFilled => (this.nodeBuffer?.IsFilled).GetValueOrDefault();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-17
        • 1970-01-01
        • 1970-01-01
        • 2022-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多