Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在if语句的一行中分配多个引用_C#_Performance_Coding Style_Code Readability - Fatal编程技术网

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

C#在if语句的一行中分配多个引用,c#,performance,coding-style,code-readability,C#,Performance,Coding Style,Code Readability,我见过这样的代码:开发人员在执行一些方法调用后,从if语句中分配属性或局部变量 例如: void SomeMethod() { MyObject myObject; if ((myObject = DoSomething()) != null) { //Do some business logic } } 我认为当很多这样的赋值发生时,或者在if语句中有更多的赋值,比如访问数组时,会变得非常

我见过这样的代码:开发人员在执行一些方法调用后,从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
}

这有很多很酷的应用(我在一个闭合的while循环中用赋值做了一个单线洗牌)!但它确实降低了可读性,请小心使用!