switch - case 中不能定义变量 的解决办法

5 篇文章 0 订阅

 

在case中加上{}括起来,限定一下作用域。

E.g:
 

switch(){

    case: xxx{


    break;

     }

}

 

知乎讨论https://www.zhihu.com/question/23051685

1)不能跳过的不是变量的定义,而是初始化。把int ival改成int ival=0;则不会编译通过;

2) ival是局部变量,作用域是所在的大括号内, 第二个case仍然属于该变量的作用域。另外,变量的定义不是语句,所以无需执行也是全范围有效。这里第一个case的语句虽然没有被执行,但它的变量定义仍然有效。

"最后补充一下,你的声明还可以是一个类的对象,那么这时候这个声明的语句就很可能是一个命令了:调用相应的构造函数。这种情况下,编译器就会告诉你跳过了该做的事情,不能这么写了"

3) 其实这就是变量作用域的问题。变量自定义起在其作用域里始终有效。而除了全局性的外部变量,以及文件域的静态变量,其他的都是语句块限定的,即花括号{}里有效。

4)

 

Related:

https://www.cnblogs.com/zhebin/archive/2013/05/19/3055308.html

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
C#switch-case语句是一种流程控制结构,它提供了一种方便的方式来根据不同的情况执行不同的代码块。它的基本语法如下所示: ``` switch (expression) { case value1: // code to be executed if expression matches value1 break; case value2: // code to be executed if expression matches value2 break; case value3: // code to be executed if expression matches value3 break; ... default: // code to be executed if none of the above cases match break; } ``` 在这个语法,expression是一个变量或表达式,它的值将与每个case语句后面的value进行比较。如果expression的值与某个case语句后面的value相匹配,则执行该case语句后面的代码块。如果没有任何一个case语句匹配,那么就会执行default后面的代码块。每个case语句必须以一个break语句结束,以避免执行下一个case语句。 下面是一个简单的示例,演示了如何使用switch-case语句: ``` int day = 4; string dayName; switch (day) { case 1: dayName = "Monday"; break; case 2: dayName = "Tuesday"; break; case 3: dayName = "Wednesday"; break; case 4: dayName = "Thursday"; break; case 5: dayName = "Friday"; break; case 6: dayName = "Saturday"; break; case 7: dayName = "Sunday"; break; default: dayName = "Invalid day"; break; } Console.WriteLine("Today is {0}", dayName); ``` 在这个例子,我们定义了一个整数变量day,并将其设置为4。然后我们使用switch-case语句来根据day的值设置一个字符串变量dayName,它将包含该天的名称。由于day的值为4,所以我们将执行第四个case语句,并将dayName设置为“Thursday”。最后我们将结果输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

First Snowflakes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值