C#else如果混乱

时间:2017-02-06 21:50:30

标签: c#

我目前正在研究条件结构。如果我错了,请纠正我,否则如果和其他(if(){})是同一件事......示例:

a=5;
if(a==6)
{ 
   Console.WriteLine("Variable 'a' is 6");
}
else if(a==5)
{
     Console.WriteLine("Variable 'a' is 5");
}

a=5;
if(a==6)
{ 
    Console.WriteLine("Variable 'a' is 6");
}
else
{
    if(a==5)
    {
        Console.WriteLine("Variable 'a' is 5");
    }
}

这些东西是一样的吗?如果是的话,如果我能写出“第二种方式”(我写的第二个例子),为什么还存在呢?

4 个答案:

答案 0 :(得分:5)

是的,这些实际上完全相同。

"否则如果"存在的语句是在有许多条件要测试时制作更干净的代码。例如:

if (a==b) {
   //blah
} else if (a==c) {
   //blah
} else if (a==d) {
   //blah
} else if (a==e) {
   //blah
}

比嵌套方法更清晰

if (a==b) { 
    //blah
} else {    
    if (a==c) {
        //blah
    } else {
        if (a==d) {
            //blah
        } else {
            if (a==e) {
                //blah
            }
        }
    }
}

答案 1 :(得分:3)

  

为什么else if存在

它没有。它本身不是关键字或构造。你的两个例子是相同的,只是在第二种情况下,你在代码中添加了一些多余的括号和空格。

ifelse都只是后跟一个语句。在您的第一个示例中,else后面的语句是:

 if(a==5)
{
     Console.WriteLine("Variable 'a' is 5");
}

第二个示例只是在大括号中包含相同的语句,并在开头添加一个新行。新行被忽略,因此它不会改变语义,并且因为代码已经单个语句,将它包装在大括号中并不会以任何方式对其进行更改。 / p>

答案 2 :(得分:2)

严格来说,没有else语句这样的东西。一个"否则如果"实际上实际上只是一个if,它有一个单独的主体,恰好是一个完全独立的var a = 5; // This if uses a single line if (a == 6) DoSomething(); // This else is a single line that is also a single-line if else if (a == 4) DoAnotherThing(); // This else uses a single line as well, but is referring instead to the second if else DoSomethingElse(); 语句的开头。你可以像这样想象它:

if (a == 6) 
{
    DoSomething();
}
else 
{
    if (a == 4) 
    {
        DoAnotherThing();
    }
    else 
    {
        DoSomethingElse();
    }
}

以上脚本与以下内容相同:

if (a == 6) 
    DoSomething();
else 
    if (a == 4) 
        DoAnotherThing();
    else 
        DoSomethingElse();

甚至这个:

else if

它被编写为{{1}}的原因通常是因为它补充了代码的逻辑流程。那,它看起来更漂亮。

答案 3 :(得分:0)

大多数情况下,它使代码更清晰,更容易阅读,更好地缩进,特别是如果你对行的字符长度有任何约定(如果你没有,那么你在大的时候有三十个缩进如果声明,这样的痛苦阅读)。它还节省了空间,一些额外的字符和数千行的缩进可能不是很多,但为什么要使用它,如果你不必。当代码编译时,它们在DLL中几乎完全相同。