c# - LINQ 的 Cast 方法表现出意外

标签 c# linq

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

var x = "hallo";
var works = x.Select(c=>(byte)c).ToArray();
var doesNotWork = x.Cast<byte>().ToArray();

最佳答案

Enumerable.Cast 仅执行拆箱和引用转换。它不执行其他转换,例如内置值类型转换和用户定义转换。

在 .NET 3.5 SP1 之前,它实际上确实为您执行了更多的转换。我确信执行代码审查的人在博客上写过它,但我永远记不起它是谁。 (我一直认为是 Eric Lippert,但不是。)我会查一下。

我要说的一件事是,这可以得到更好的记录。

碰巧,这是 Bill Wagner's recent video 中的第一个谜题。 .

关于c# - LINQ 的 Cast 方法表现出意外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031435/

相关文章:

c# - 如何将 ListView 绑定(bind)到多个实体?

c# - 使用带 DTC 的 MSMQ 时,Hangfire 作业会在 1 分钟后自动重新安排

c# - ef-core 加载嵌套 tph 继承成员的集合属性

c# - 如何将此 LINQ 查询编写为单个查询?

c# - Entity Framework 、存储库模式和 let 语句

c# - 使用 FastZip 压缩目录,并且只包含某些文件类型(文件过滤)

c# - 为什么 Timer_Tick 事件中的 SendKeys.SendWait 和 Thread.Sleep 没有阻塞?

c# - 无法在 Azure 应用服务上生成日志 NLog 内部日志记录文件

c# - 将 Linq 查询结果与数组进行比较

c# - 在 linq 查询中获取计数