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