cod*_*sed 5 c# c#-5.0 null-conditional-operator
我一直在寻找在调用方法(或方法链)时处理空对象的最佳选择.
我们的常见做法是检查条件:
if ( customObject != null ) {
customObject.callMe();
}
Run Code Online (Sandbox Code Playgroud)
使用扩展方法可以进一步改进:
Program customObject = null;
if (customObject.NotNull()) {
customObject.CallMe();
}
public static bool NotNull(this object o) {
return o == null;
}
Run Code Online (Sandbox Code Playgroud)
请注意:我通常会忽略!从我的编程实践.因此,明智地说对我来说扩展方法很好.
但是,在处理涉及Method链的时候,它变得非常复杂.
customObject.CallMe().CallMe2() ex...
Run Code Online (Sandbox Code Playgroud)
你怎么认为它可以在C#中处理,所以CallMe只有在customObject不为null时CallMe2调用它,并且仅在CallMe返回非null对象时才被调用.
当然我可以使用If条件或三元运算符.但是,我想知道vNext,C#5.0是否有一些东西可以提供.
Sco*_*lie 12
在即将到来的C#6(vNext)中有?.运算符(空条件运算符),它可以轻松地为每个嵌套属性链接空引用检查.
一个例子是:
int? first = customers?.[0].Orders?.Count();
Run Code Online (Sandbox Code Playgroud)
这是Visual Studio UserVoice站点中的请求功能
您可以在Roslyn的Codeplex站点上查看C#6.0的所有新语言功能的状态:
| 归档时间: |
|
| 查看次数: |
3193 次 |
| 最近记录: |