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>