为什么我不能在一个int的switch-statement中使用一个条件?

时间:2013-01-09 09:42:11

标签: c# c switch-statement

我有这段代码

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

}

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

这可以在“C”编程中完成吗?

4 个答案:

答案 0 :(得分:3)

你不能在switch case中给出表达式,你必须给出constant值而不是表达式。

  

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

您可以阅读有关切换here的更多信息。

答案 1 :(得分:2)

a&lt; = b是bool表达式,但aint

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

答案 2 :(得分:1)

该语言设计为需要不变的案例值有几个原因,包括:

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

答案 3 :(得分:0)

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