title: What's the benefit of .Cast over .Select?
body: <p>I have a type with implicit conversion operators to most base types and tried to use <code>.Cast&lt;string&gt;()</code> on a collection of this type, which failed. As I dug into it, I noticed that casting via <code>as</code> doesn't use implicit or explicit conversion and just won't compile, so I guess that's where <code>.Cast</code> falls down. So this fails</p>
  
  <pre><code>var enumerable = source.Cast&lt;string&gt;();
  </code></pre>
  
  <p>but this works</p>
  
  <pre><code>var enumerable = source.Select(x =&gt; (string)x);
  </code></pre>
  
  <p>So what's the benefit of Cast? Sure, it's a couple of characters shorter, but seems a lot more limited. If it can be used for conversion, is there some benefit other than the more compact syntax?</p>