LINQ的Cast方法表现出乎意料

Har*_*yer 1 c# linq

我想将字符串转换为字节数组.当我通过使用LINQ的Cast函数来尝试这个时,我得到一个'System.InvalidCastException'.为什么?这是我尝试过的:

var x = "hallo";
var works = x.Select(c=>(byte)c).ToArray();
var doesNotWork = x.Cast<byte>().ToArray();
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

Enumerable.Cast 执行拆箱和参考转化.它执行其他的转换,例如内置的值类型一和用户定义的转换.

.NET 3.5 SP1之前,它实际上没有执行,而更多的转换为你.我确信执行代码审查的人在博客上写了这篇文章,但我永远不会记得它是谁.(我一直以为是Eric Lippert,但事实并非如此.)我会仔细查看.

我要说的一件事是,这可以更好地记录下来.

碰巧,这是Bill Wagner最近视频中的第一个益智游戏.

  • @Eric:啊,在这种情况下,可能是电子邮件中的评论或类似的评论.从节日欢迎回来,顺便说一下. (2认同)