【问题标题】:If - else statement without elseIf - else 没有 else 的语句
【发布时间】:2015-03-24 18:28:37
【问题描述】:

有人能解释一下为什么 if - else 语句会这样工作而不抛出错误或异常吗?如果这在 C# 中是故意的,是否有人可以解释两者之间是否存在差异?

if (comboBox1.SelectedIndex == -1) { }
    {
            //code
    }

而不是使用

  if (comboBox1.SelectedIndex == -1) { }
  else {
            //code
       }

由于我注意到在我重新排列代码以使其更具可读性之后,我不小心在我的代码中添加了类似上述的 if - else 语句。

【问题讨论】:

  • 第一个 if 语句为空。 //code 将始终被执行。
  • 你的意思是它可以工作,因为第一个 {} 有注释,因此被跳过了?
  • @maam27 不,因为if 语句下的{ }if 语句完全无关。 (这不是 if-else 语句 - 它是一个 if 语句后跟一段代码)。
  • 我想这个问题本身并不正确,因为它与 if - else 根本不相关。但我想我确实学到了一些东西,所以这并不是完全没有白费的,所以感谢所有花时间整理这个的人。

标签: c# if-statement


【解决方案1】:

第二个区块

if (comboBox1.SelectedIndex == -1) 
{ 
    var a = 10;
}
{
    var b = 10;
}

...不是 else 块,而只是一个代码块。这里变量b 的作用域只在块内。是一样的

if (comboBox1.SelectedIndex == -1) 
{ 
    var a = 10;
}
var b = 10;

...除了变量b 的作用域发生了变化。

【讨论】:

  • 我不知道能够使用 { } 添加带有封闭变量等的代码块。感谢您的解释和示例。
【解决方案2】:

{} 定义了一个代码块。您的代码中的任何地方都可能有这样的块。这并不意味着您必须在 if 或其他内容之后添加它们。

【讨论】:

    【解决方案3】:

    这是因为您可以在函数中间打开一个新块。这是合法的:

    void func()
    {
        Console.WriteLine("Hello");
        {
             Console.WriteLine("World");
        }
    }
    

    您可以使用这样的内部块来限制变量的范围。

    您的第一个代码是 if 语句,后跟一段代码(无论 if 表达式的值如何都运行)。

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 2013-06-16
      • 2014-11-11
      • 2015-05-16
      相关资源
      最近更新 更多