为什么我不能在 int 的 switch 语句中使用条件作为 case?

问题描述 投票:0回答:5

我有这个代码

int a = 0 ;
int b =2;
switch (a)
{ 
    case  a <= b: //<--error 
        //Do something
        break;
    default:
        break;

}

我知道这可以用 if else 语句来完成,但我很好奇,为什么它不能在 switch case 语句中工作?

这可以用“C”编程来完成吗?

c# c switch-statement
5个回答
4
投票

您无法在 switch case 中给出表达式,您必须给出

constant
值而不是 case 中的表达式。

switch语句是处理多个的控制语句 通过将控制权传递给其中一个案例来进行选择和枚举 其体内的陈述

您可以在此处阅读有关 switch 的更多信息。


2
投票

a <= b is

bool
表达式,但
a
int

还根据 http://msdn.microsoft.com/en-us/library/06tc147t(v=vs.90).aspx 每个案例标签指定一个常量值。在你的情况下是表达,而不是恒定的。


1
投票

该语言被设计为需要恒定的大小写值有几个原因,包括:

(1) 确保范围不能重叠(并且可以在编译时检查)。 (2) 使 switch 语句具有极高的性能。 (3) 让 C++ 程序员更熟悉(早期 C# 新用户中,C++ 程序员占很大比例)。


0
投票

因为在某些情况下你应该指定 a 的可能值,而不是条件。


0
投票

如果你这样做,第一个案例将被执行

switch(True) {
    case a<= b:
        //Do something
        break;
}

因此,将表达式的结果(本例中为 True)与 switch 的参数(本例中为 0)进行比较,比较如下所示: “是 0 == True”;这显然会导致 false,因为 0 被视为 false,非零被视为 true,因此代码将无法运行。

© www.soinside.com 2019 - 2024. All rights reserved.