Casting和Linq Cast <t>()</t>

时间:2010-07-29 11:18:53

标签: linq extension-methods linq-to-objects casting

在尝试回答this question时,我发现了以下内容:

string s = "test";

var result1 = s.Select(c => (ushort)c); // works fine

var result2 = s.Cast<ushort>(); // throws an invalid cast exception

为什么Cast<T>()在这里失败?差异是什么?

1 个答案:

答案 0 :(得分:12)

认为你会在这里找到答案:

Puzzling Enumerable.Cast InvalidCastException

最后一部分,在编辑:

  

Cast<T>()是一种扩展方法   IEnumerable而非。{   IEnumerable<T>。这意味着,通过   每个值到达该点的时间   它已被投射的地方已经存在   被装箱回System.Object