Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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#_Java_Php_C++_Vb.net - Fatal编程技术网

C# 有没有什么具体的原因让你不';不使用嵌套的if语句吗?

C# 有没有什么具体的原因让你不';不使用嵌套的if语句吗?,c#,java,php,c++,vb.net,C#,Java,Php,C++,Vb.net,使用嵌套的if语句和使用一个包含大量参数的长if语句之间有区别吗 例如 if ( var1 == var2 && var3 == var4 ) { //do something } 或 if ( var1 == var2 ) { if ( var3 == var4 ) { //do something } } 我想知道这样做是否有什么不同 谢谢,它们都做了同样的事情,但我个人认为嵌套更整洁,而且它还允许在嵌套if的任意一侧执行代码,这通常是必需的 if

使用嵌套的if语句和使用一个包含大量参数的长if语句之间有区别吗

例如

if ( var1 == var2 && var3 == var4 )
{
  //do something
}

if ( var1 == var2 )
{
  if ( var3 == var4 )
  {
    //do something
  }
}
我想知道这样做是否有什么不同


谢谢,它们都做了同样的事情,但我个人认为嵌套更整洁,而且它还允许在嵌套if的任意一侧执行代码,这通常是必需的

if ( var1 == var2 )
{
     //do something here based on the first if but before second if

  if ( var3 == var4 )
  {
    //do something 
  }
    //do something here also which may be different based on the nested if result
}


但是如果您不需要它,那么您的第一个代码可能会稍微快一点,只需要一个if。一般来说,编译器将为这两个变体生成相同或几乎相同的代码。对于支持短路的解释语言(不评估| | |或&&的第二部分,当结果已经确定时),它也将是几乎相同的事情

我的建议是使用最清楚地表示您想要做什么的表格

例如,如果我们要检查两个坐标是否匹配:

if (x1 == x2 && y1 == y2) 
Buf如果您的代码是这样的:

if (country_of_origin == "Sweden")
{
    if (today == thursday)
    {
       ... 
    }
}

可能更有意义…

嗯,这取决于你的情况。如果它和你的一样,那么绝对没有必要选择第二条路


这是关于编写干净易读的代码-这样做就像是
if(condition1和&condition2)
您建议这两个条件对于以下代码片段是绝对必要的。

不同的情况需要不同的解决方案:

if ( width == height && width == depth )
{
  // Its a cube!
}

if ( x == y )
{
  if ( p == q )
  {
    //do something for when x == y but p == q
  } else {
    //do something for when x == y but p != q
}

您不能概括什么构造应该使用或不应该使用-它们在某些情况下都是合适的。

第二种样式允许检查需要独立于第一种if条件进行的检查

例如,如果您需要在(var3!=var4)但(var1==var2)仍然存在的额外条件下执行某些操作,则不可能执行以下操作:

“如果(var1==var2&&var3==var4)”

因此,您需要类似以下内容:

if(var1 == var2){
    if(var3 == var4){

    }

    //more code...
    //... var3 & var 4 change...
    //

    if(var3 != var4){

    }
}

正如评论员@Solace所说,它只允许更大的灵活性。

第二种格式更灵活。假设只有当var1==var2时,才应该检查另一个条件。如果使用第一种格式,则必须再次检查var1==var2。在许多语言中,这两种代码将编译成相同的二进制文件。在大多数情况下,也不需要创建额外的缩进。我会在这个表单中使用嵌套的
if
,例如,如果有一个
else
语句,它只依赖于
var3==var4
条件。这都是关于可读性和编码风格的。尽量使代码简单易读。就性能而言,由于以下原因,这两个语句是相等的。问题的可能重复既是基于意见的问题,也是语言标签垃圾邮件的一个示例。在一种语言中正确的东西(如执行优化)在另一种语言中可能不一定正确。
“可能快一点”
——您能这样概括所有标记的语言吗?诚然,尽管这个问题带有语言标签垃圾邮件的污点。在任何语言上输入都要快一点:)@HovercraftFullOfEels我标记了许多语言以获得快速响应,因为这个问题非常通用,与一种特定语言无关,除了vb.net,在那里你必须结束if语句…@KyleT:你不应该为了快速响应而发送垃圾标签。一种语言的答案通常不适用于另一种语言。第二部分当然与“else”相同,减少了计算量(当然,除非var3或var4发生了变化)。