在尝试回答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>()
在这里失败?差异是什么?
答案 0 :(得分:12)
认为你会在这里找到答案:
Puzzling Enumerable.Cast InvalidCastException
最后一部分,在编辑:
下
Cast<T>()
是一种扩展方法IEnumerable
而非。{IEnumerable<T>
。这意味着,通过 每个值到达该点的时间 它已被投射的地方已经存在 被装箱回System.Object