1

可能重复:
C# if-null-then-null 表达式

我在 C# 中错过的是在 sql server 中对空引用的处理:

var a = SomeObject.Property1.Property2.Property3.Property4

如果任何属性为空,那么我会得到 NullReferenceException。有时,如果a将其设置为 null 而没有错误会更方便,我可以简单地检查一下。

相似地,

var a = SomeList.FirstOrDefault(...).Select(...)

a如果序列不包含任何元素而不是设置为 null,这也会引发异常。

所以我的问题是:在这些场景中是否有简短而好的方法(可能使用扩展?)来实现类似 sql 的行为?

4

1 回答 1

0

这仅适用于静态属性,因为未实例化的对象为空。使用扩展方法也无法做到这一点,因为它们将扩展对象的实例作为其第一个参数。

这样做的丑陋方式......

var a;
try {
   a = SomeObject.Property1.Property2.Property3.Property4;
} catch (NullReferenceException) { }
于 2012-12-10T16:56:51.073 回答