How to use && operator in switch statement based on a combined return a value?
c#, switch-statement
Solution
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:
- http://www.dotnetperls.com/switch
- http://msdn.microsoft.com/en-us/library/06tc147t.aspx
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.
Problem
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"