int int1 = 1;
int int2 = 2;
switch(int1)
{
case int2:
doSomething();
break;
}
Here's an example of when I get this error, is there a way to do something like that without getting the "CS0150: A constant value is expected" error, or do I have to use if statements?
CodePudding user response:
It should be case 2
, not case int2
. case should have a constant value not a variable.
CodePudding user response:
You would have to use an if
statement to accomplish what you want, or make int2
const
.
Tutorials Point does a good job of explaining this:
The following rules apply to a switch statement −
The expression used in a switch statement must have an integral or enumerated type, or be of a class type in which the class has a single conversion function to an integral or enumerated type.
You can have any number of case statements within a switch. Each case is followed by the value to be compared to and a colon.
The constant-expression for a case must be the same data type as the variable in the switch, and it must be a constant or a literal.
When the variable being switched on is equal to a case, the statements following that case will execute until a break statement is reached.
When a break statement is reached, the switch terminates, and the flow of control jumps to the next line following the switch statement.
Not every case needs to contain a break. If no break appears, then it will raise a compile time error.
A switch statement can have an optional default case, which must appear at the end of the switch. The default case can be used for performing a task when none of the cases is true.