假设我有一个IEnumerable<int>
,我希望这些转换成它们的ASCII等效字符。IEnumerable.Cast()vs cast在IEnumerable.Select()
对于一个整数,它只是(char)i
,所以总是有collection.Select(i => (char)i)
,但我认为使用collection.Cast()
会更简洁。
任何人都可以解释为什么我得到InvalidCastException
当我使用collection.Cast<char>()
但不是collection.Select(i => (char)i)
?
编辑:有趣的是,当我打电话给collection.OfType<char>()
时,我得到一个空集。
谢谢!有点反直觉,但它是有道理的 – hehewaffles 2012-03-26 03:34:58
连接到Jon Skeet的博客似乎被打破。这是一个替代:http://edulinq.googlecode.com/hg/posts/33-CastAndOfType.html – 2014-07-22 23:38:14
@TylerGill,这个链接也被打破 – 3per 2016-10-26 02:50:41