我不能真正地说出问题的标题.无论如何,说我有一个声明如下:
if(myObject.SomeMethod() != null)
{
DoSomethingWith(myObject.SomeMethod());
}
Run Code Online (Sandbox Code Playgroud)
我想避免双重打电话SomeMethod().理想情况下,模式匹配的东西如下:
if(myObject.SomeMethod() result != null)
{
DoSomethingWith(result);
}
Run Code Online (Sandbox Code Playgroud)
语言中有什么可以帮助我吗?目前,我的选择是:
var result = myObject.SomeMethod();
if(result != null)
{
DoSomethingWith(result);
}
Run Code Online (Sandbox Code Playgroud)
我知道上面的方法没有错,这是非常规范的.简单地说,最近语言中添加了很多语法糖,这使得我们可以大量压缩我们的代码:我问,因为我不知道是否有什么东西可以阻止if(myObject.SomeMethod() result != null)工作.
好吧,我建议你使用第三个代码中的变量.然而...
如果您不想使用变量,可以使用模式匹配:
if(myObject.SomeMethod() is var result && result != null)
{
DoSomethingWith(result);
}
Run Code Online (Sandbox Code Playgroud)
但请注意,这并不妨碍对变量的访问result.您甚至可以在访问后访问它if.如果你想要,你需要一个新的范围:{ if... }.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |