【发布时间】:2017-06-01 20:35:29
【问题描述】:
我一直在寻找在调用方法(或方法链)时处理空对象的最佳选择。
我们通常的做法是检查 if 条件:
if ( customObject != null ) {
customObject.callMe();
}
通过使用扩展方法可以进一步改进:
Program customObject = null;
if (customObject.NotNull()) {
customObject.CallMe();
}
public static bool NotNull(this object o) {
return o == null;
}
请注意:我通常忽略!来自我的编程实践。因此,明智的做法是说扩展方法对我来说很好。
但是,当涉及到方法链时,处理变得非常复杂。
customObject.CallMe().CallMe2() ex...
您认为它可以在 C# 中如何处理,因此仅当 customObject 不为 null 时才调用 CallMe,并且仅当 CallMe 返回非 null 对象时才调用 CallMe2。
当然我可以使用 If 条件或三元运算符。但是,我想知道 vNext,C#5.0 是否有一些东西可以提供。
【问题讨论】:
-
从哪方面来说,使用 NotNull() 是一种改进?
-
通过使用扩展方法来适应实际情况,我可以控制我定义为 Null 的内容,因此有改进。 (我通常忽略!从我的编程实践中)。
-
您可能想查看Null Object Pattern
-
至少 if(myObject != null) 是一个清晰的代码。我不确定使用模式来避免这种代码是否会帮助下一个接受你的代码的程序员。
标签: c# c#-5.0 null-conditional-operator