我看过开发人员在执行某些方法调用后从if语句中分配属性或局部变量的代码。
示例:
void SomeMethod()
{
MyObject myObject;
if ((myObject = DoSomething()) != null)
{
//Do some business logic
}
}
我认为当很多这些任务正在发生时会变得非常混乱,或者在if语句中有更多的事情发生,例如访问数组。
我个人更喜欢这样的事情:
void SomeMethod()
{
MyObject myObject = DoSomething();
if (myObject != null)
{
//Do some business logic
}
}
第二个例子的第一段代码有什么好处吗?任何微不足道的效率增益或任何东西?我想知道我是否遗漏了什么。
一大堆代码集正在嵌套这种代码风格,我相信的可读性较差。
答案 0 :(得分:1)
这种变化没有性能影响 - 这是个人偏好的问题。这是有效的,因为赋值是一个产生值的表达式,可用于比较或其他表达式。这个想法是将赋值“折叠”到条件的头部,实质上是保存一行代码。
虽然这与单个if
没有区别(行数没有改变),但对于较长的条件链确实有所不同。它在循环中也很有用,例如
int ch;
while ((ch = reader.Read()) != -1) {
// Do something with ch
}