Слиться со свойством обнуляемого объекта? - PullRequest
0 голосов
/ 30 мая 2018

Здравствуйте, есть ли способ сформулировать условие, подобное приведенному ниже?Если поле имеет значение null, тогда false, иначе 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?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

this.nodeBuffer?.IsFilled возвращает Nullable<T>, так что вы можете просто использовать метод GetValueOrDefault() для него, поэтому он будет false, если null.

Итак, определение вашего свойствабудет выглядеть ниже:

public bool IsFilled => (this.nodeBuffer?.IsFilled).GetValueOrDefault();
0 голосов
/ 30 мая 2018

Да, вы можете использовать оператор равенства , который работает с Nullable<bool>

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

Обнуляемые типы поддерживают все операторы, которые поддерживают их ненулевые типы, которые называются: поднял оператор

...