在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语句的一行中赋值多个引用

这个更改对性能没有影响——这是个人偏好的问题。这是有效的,因为赋值是一个产生值的表达式,它可以用于比较或其他表达式。其思想是将赋值"折叠"到条件语句的头文件中,实质上节省了一行代码。

虽然这对单个if没有影响(行数不变),但对于较长的条件链确实有影响。它在循环中也很有用,例如

int ch;
while ((ch = reader.Read()) != -1) {
    // Do something with ch
}