C#在if语句的一行中分配多个引用

时间:2014-05-27 01:54:25

标签: c# performance coding-style code-readability

我看过开发人员在执行某些方法调用后从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
       }
    }

第二个例子的第一段代码有什么好处吗?任何微不足道的效率增益或任何东西?我想知道我是否遗漏了什么。

一大堆代码集正在嵌套这种代码风格,我相信的可读性较差。

1 个答案:

答案 0 :(得分:1)

这种变化没有性能影响 - 这是个人偏好的问题。这是有效的,因为赋值是一个产生值的表达式,可用于比较或其他表达式。这个想法是将赋值“折叠”到条件的头部,实质上是保存一行代码。

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

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