如何实现可空对象属性判断:对象为空返回false,否则返回属性值?
如何实现「若对象为空则返回false,否则返回其属性值」的条件判断逻辑?
您好,是否可以编写如下条件判断逻辑:如果字段为空则返回false,否则返回该字段的属性值?代码示例如下:
class Node { public bool IsFilled; } class Holder { Node nodeBuffer; public bool IsFilled => this.nodeBuffer?.IsFilled ?? false; }请问如何实现类似「若nodeBuffer为空则返回false,否则返回nodeBuffer.IsFilled」的逻辑?
其实你给出的代码示例已经完美实现了这个需求!咱们来拆解一下这段代码里的关键语法:
this.nodeBuffer?.IsFilled:这里的?.是空条件运算符,它会先检查nodeBuffer是否为null。如果nodeBuffer是null,整个表达式直接返回null;如果不为null,就正常访问它的IsFilled属性。?? false:这是空合并运算符,它会判断前面的表达式结果是否为null。如果是null(也就是nodeBuffer为空的情况),就返回后面的false;如果前面有有效值,就直接返回那个属性值。
如果你习惯更直白的写法,也可以用传统的if-else逻辑来实现,效果完全一致:
class Holder { Node nodeBuffer; public bool IsFilled { get { if (this.nodeBuffer == null) { return false; } return this.nodeBuffer.IsFilled; } } }
不过显然用空条件+空合并的语法糖写法更简洁优雅,这也是C#里处理这类空值判断的推荐方式哦。
内容的提问来源于stack exchange,提问作者Bercovici Adrian
相关产品推荐
相关产品推荐

