One lesser-known known facet of switch in C# is that it relies on the operator=, and since it can be overridden,overriden you could have something like this:
string s = foo();
switch (s) {
case "abc": /*...*/ break;
case "def": /*...*/ break;
}
string s = foo();
switch (s) {
case "abc": /*...*/ break;
case "def": /*...*/ break;
}