C#switch语句中的每个case / default块都带有大括号的switch语句?

像素点

通常,C#中的switch语句如下所示

switch (sh)
{
   case 1:
      DoThis();
      DoThat();
      break;
   case 2:
      DoThis();
      DoThat();
      break;
   default:
      DoThis();
      DoThat();
      break;   
}

但是,有史以来第一次,我看到有人在下面的switch语句中为每个case语句使用花括号:

switch (sh)
{
   case 1:
   {
      DoThis();
      DoThat();
      break;
   }
   case 2:
   {
      DoThis();
      DoThat();
      break;
   }
   default:
   {
      DoThis();
      DoThat();
      break; 
   }  
}

为什么这些大括号{}被用来对上面的情况语句的每个case和default块?

为什么需要它们?

有什么不同?

EVK

它们不是必需的,但是如果您在多个分支中声明具有相同名称的变量,它们将很有用:

switch (sh) {
    case 1:
        var test = "test";
        Console.WriteLine(test);
        break;
    case 2:
        var test = "test";
        Console.WriteLine(test);
        break;
}

它不会编译,抱怨变量名冲突。但是,如果您添加大括号

switch (sh) {
    case 1: {
        var test = "";
        Console.WriteLine(test);
        break;
    }
    case 2: {
        var test = "";
        Console.WriteLine(test);
        break;
    }
}

它将为每个分支创建自己的范围,并且可以正常编译。

有些人习惯了这一点,即使没有定义任何变量,也总是添加括号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章