How can I use &&
operator in switch case?
This is what i want to do:
private int retValue()
{
string x, y;
switch (x && y)
{
case "abc" && "1":
return 10;
break;
case "xyz" && "2":
return 20;
break;
}
}
My problem is that "abc"
and "1"
are both of type string
and the compiler gives me message that:
"operator && cannot be applied to string"
There is no such operator in switch
statements. The switch
statement operates on a single variable which is a value type or a string. See:
The real problem in your example is that both in the switch
expression, and in case
labels, you are applying &&
to string
s. You cannot apply &&
to strings, it only works on booleans (unless you overload it and define a new function that does work on strings).
What you are trying to accomplish is probably to simultaneously check the values of two different variables with one switch
. This is impossible; switch
only checks one variable at a time. The solution is to use if
statements or a specialized CheckStrings(string s1, string s2)
method (which may or may not use if
statements).
In a comment you have expressed concerns with length. Observe:
private int retValue(string x, string y)
{
if (x == "abc" && y == "1") return 10;
if (x == "xyz" && y == "2") return 20;
throw new Exception("No return value defined for these two strings.")
}
Shorter, even if you discount the gains from skipping redundant break;
statements and putting return
s on the same line.
Despite there is an accepted answer already...
To achieve logical AND
in switch
, it has to be done like this:
switch(x + y)
{
case "abc1":
return 10;
break;
case "xyz2":
return 20;
break;
}
Which works.
For logical OR
see zey answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With