在if语句的一行中赋值多个引用
本文关键字:一行 赋值 引用 语句 if | 更新日期: 2023-09-27 18:05:29
我见过一些代码,开发人员在执行一些方法调用后从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
}
}
与第二个示例相比,第一段代码有什么好处吗?有没有微小的效率提升?我想知道我是否错过了什么。
一大块代码集正在嵌套这种风格的代码,我认为可读性较差。
这个更改对性能没有影响——这是个人偏好的问题。这是有效的,因为赋值是一个产生值的表达式,它可以用于比较或其他表达式。其思想是将赋值"折叠"到条件语句的头文件中,实质上节省了一行代码。
虽然这对单个if
没有影响(行数不变),但对于较长的条件链确实有影响。它在循环中也很有用,例如
int ch;
while ((ch = reader.Read()) != -1) {
// Do something with ch
}