IEnumerable.Cast() 与 IEnumerable.Select() 中的转换

2023-12-20

假设我有一个IEnumerable<int>我希望将它们转换为 ASCII 等效字符。

对于单个整数,它只是(char)i,所以总有collection.Select(i => (char)i),但我认为使用它会更干净一些collection.Cast().

谁能解释一下为什么我得到一个InvalidCastException当我使用collection.Cast<char>()但不与collection.Select(i => (char)i)?

编辑:有趣的是,当我打电话时collection.OfType<char>()我得到一个空集。


The Cast<T> and OfType<T>方法仅执行引用和拆箱转换。因此他们无法将一种值类型转换为另一种值类型。

这些方法在非泛型上运行IEnumerable接口,所以它们本质上是从IEnumerable<object> to IEnumerable<T>。所以,你不能使用的原因Cast<T>转换自IEnumerable<int> to IEnumerable<char>这和你不能投盒装的原因是一样的吗int to a char.

本质上,Cast<char>在您的示例中失败是因为以下失败:

object ascii = 65;
char ch = (char)ascii;   <- InvalidCastException

看看乔恩·斯基特的精彩表演教育林克帖子 https://codeblog.jonskeet.uk/2011/01/13/reimplementing-linq-to-objects-part-33-cast-and-oftype/更多细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IEnumerable.Cast() 与 IEnumerable.Select() 中的转换 的相关文章

随机推荐

  • 用 ggvis 将 RMarkdown 编织到 Word

    当我尝试用以下内容编写 RMarkdown 文档时ggvis绘图到 Word 我从 Rstudio 收到以下消息 Error Functions that produce HTML output found in document targ
  • 将过滤器从一个交叉过滤器数据集应用到另一个交叉过滤器

    我有两个数据集 它们具有相似的列 维度 但按行进行不同的分组并包含不同的度量 Ex 数据集1 Year Category SubCategory Value01 Value02 2000 Cars Sport 10 11 2000 Cars
  • IntelliJ 显示单元测试未涵盖的更改行

    在日常工作中 我打算为我更改的代码编写测试 我的工作流程通常是这样的 查找要更改的代码 编写失败的测试 更改代码 观看测试通过 在提交之前 我运行所有测试 但实际上 我可以在不知不觉中更改有关我们的测试覆盖范围的任何行 我现在所做的通常是查
  • strstr 显示出现之前的字符串

    我想在针出现后得到字符串的第一个位 如下所示 user strstr email protected cdn cgi l email protection true 但这仅适用于 PHP 版本 5 3 0 我有 5 2 9 有什么办法可以得
  • 用于 javascript 的 QT 5.4 WebEngine 开发工具

    我正在使用 QWebEngineView 和 QWebEnginePage 创建一个应用程序 我想知道是否有办法激活 Web 开发工具 我需要调试 html javascript 代码 就像您在 Chrome 上使用 Google Deve
  • 读取一堆 JSON 文件,转换它们,然后保存它们

    我正在努力实现这一点Gulp 阅读每一个 json给定目录 包括子目录 中的文件 以某种方式改变它们 例如添加新的根级别等 将它们保存到一个新目录中 保持原始结构 我迷失的地方是如何通过管道读取 写入 JSONsrc 我现在有以下骨架 gu
  • int索引 = Convert.ToInt32(e.CommandArgument.ToString());不管用

    请帮我 int index Convert ToInt32 e CommandArgument ToString 这对我不起作用 它显示异常 输入字符串的格式不正确 e CommandArgument不为空 我正在从中获得价值 你应该像下面
  • Imagemagick SVG 到 PDF 转换图像质量很差

    我们正在尝试将 SVG 宽度 737 高度 521 转换为 A4 尺寸的 PDF 问题是生成的图像质量非常糟糕 这就是我们正在做的 SVG 带有远程图像 URL
  • 领域模型与数据库模型不同吗?

    我理解 DDD 中的概念 但在实践中却有点令人困惑 我正在使用 C SQL Server 和 EF 我发现根据我的数据库模式 持久性模型看起来与我的聚合不同 为了定义干净 漂亮的聚合 实体和值对象 我的域模型看起来与数据库模型不同 此外 如
  • 如何通过引用传递枚举?

    我有一个带有四个键的枚举 我将其作为接口程序的输入 并且我想将枚举按值传递给接口函数 该函数已经变得相当长 枚举是这样的 enum MYKEYS W S O L 还有一个布尔数组 我必须通过引用传递 这也有点棘手 bool key 4 fa
  • 32位OR如何保持加载指令?(RISC风格32位架构)

    我对指令大小和可寻址空间有点困惑 我假设指令大小应该与地址位的大小相同 我在书中没有找到足够的解释 如果我是正确的 那么理论上如果我们有一个 2 32 32位架构 RISC风格 中的内存可寻址单元 字节 4字节大小的加载指令如何保存操作码和
  • 如何在 Firefox 中检查预检结果缓存的内容

    火狐浏览器支持吗http www w3 org TR cors preflight result cache http www w3 org TR cors preflight result cache如果是的话 如何查看其内容 如何将其与
  • Selenium python - 启动 Firefox Webdriver 时拒绝访问 /hub/session

    我最近刚刚开始使用 Selenium Webdriver 而不是 Selenium 1 0 并且我正在努力解决一个完全阻止我运行测试的问题 当尝试启动 webdriver Firefox 时 我收到一个 WebDriverException
  • 如何从活动中的RecyclerView上的onClick启动活动

    大家好 当我点击时 我正在尝试开始活动RecyclerView 当我在自定义适配器中添加代码时它就会启动 但是当我在 Activity 中编写它时 它只需给我 Log 上的位置 所以有什么帮助吗 这是活动中的 OnClick 代码 这就是我
  • C# Windows 服务

    Scenario 我创建了一个 Windows 服务 但是每当我启动它时 它都会立即停止 该服务是从一个控制台应用程序构思出来的 该应用程序用于订阅事件并监视服务器上的进程 如果进程发生任何事情 即它被杀死 那么该事件将触发进程重新启动 我
  • Bash:使用变量作为关联数组名称

    我正在编写一个 Bash 脚本来简化从我们的主站点到多个机构的文件复制 在此脚本中 我尝试使用变量作为关联数组名称 但出现错误 代码如下 bin bash declare A GROUP1 declare A GROUP2 declare
  • 创建 DLL 的编程语言:C++ 或 C#

    这不是编程疑问 我将为某些应用程序编写一个 DLL 我有两个选项可供选择 C 或 C 我应该用哪种语言编写 DLL 这会影响功能吗 我是一个完全的新手 不了解 C 和 C 但不了解 C 中的一些小程序 用 C 或 C 编写 DLL 的优点和
  • 列表元素与数据框描述何时发生?

    这可能非常简单 但我不知道出了什么问题 我在列出 DataFrame 的元素时遇到问题 有时会列出 DataFrame 的元素 有时只是对数据列的数量和类型的描述 我知道行数是一个因素 但即使我只有几行 我也只能得到描述 例如 如果我有一个
  • PHP foreach 循环中的数组是如何读取的?

    我们都听说过如何在for循环 我们应该这样做 for i 0 count count array i lt c i Do stuff while traversing array 而不是这个 for i 0 i lt count array
  • IEnumerable.Cast() 与 IEnumerable.Select() 中的转换

    假设我有一个IEnumerable