【发布时间】:2012-11-28 03:00:01
【问题描述】:
我在 C# 中缺少的是对空引用的处理,就像在 sql server 中一样:
var a = SomeObject.Property1.Property2.Property3.Property4
如果任何属性为空,那么我会得到 NullReferenceException。有时如果将a 设置为null 且没有错误会更方便,我可以简单地检查一下。
同样,
var a = SomeList.FirstOrDefault(...).Select(...)
如果序列不包含任何元素而不是将a 设置为null,这也会引发异常。
所以我的问题是:有没有短而好的方法(可能使用扩展?)在这些场景中实现类似 sql 的行为?
【问题讨论】:
-
我自己以前也想过这个问题,我确信有一种扩展方式可以做到这一点。
-
我不确定您的情况是否可以接受,但您可以定义“空对象”并使用
DefaultIfEmpty而不是FirstOrDefault。 -
@Andras:你为什么说差不多?好像在问同样的事情不是吗?
-
@Chris - 实际上经过反思肯定不是!
标签: c#