为什么匿名类型不能在方法中传递?

2024-01-02

倾向于不从方法返回匿名类型的设计决策是什么?


You can从方法返回匿名类型的实例 - 但因为您无法命名它,所以您无法准确声明该方法将返回什么,因此您必须声明它只返回object。这意味着调用者将无法对属性等进行静态类型访问 - 尽管他们仍然可以传递实例,通过反射(或 C# 4 中的动态类型)访问它。

就我个人而言,我非常希望 C# 的未来版本允许您编写一个非常简短的类声明,它生成具有名称的相同代码(不可变属性、构造函数、Equals/GetHashcode/ToString)...

one很糟糕的黑客绕过它,称为举例铸造 http://tomasp.net/articles/cannot-return-anonymous-type-from-method.aspx。但我不会推荐它。

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

为什么匿名类型不能在方法中传递? 的相关文章

  • 为什么我应该使用内联代码? [复制]

    这个问题在这里已经有答案了 我是一名 C C 开发人员 这里有几个始终困扰我的问题 常规 代码和内联代码之间有很大区别吗 主要区别是什么 内联代码只是宏的一种 形式 吗 选择内联代码时必须进行什么样的权衡 Thanks 表现 正如之前的答案
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • 带有嵌入 Flash 视频的 PDF 示例?

    有谁知道我在哪里可以查看嵌入 Flash 视频的 PDF 示例 我知道问这个问题很愚蠢 因为你会认为任何面向技术的用户都应该能够使用谷歌找到一个 但我真的找不到 我的另一个问题是 使用 C 中的 API 将 Flash 视频嵌入 PDF 文
  • 使用 LINQ 展平嵌套字典

    所以我有一本形式的字典Dictionary
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • 如何生成可变参数包?

    给定不相关的输入是否可以生成非类型参数包 我的意思是 我想改变这一点 template
  • 用 OpenCL C 编写快速线性系统求解器

    我正在编写一个 OpenCL 内核 它将涉及求解线性系统 目前我的内核太慢了 提高线性系统部分的性能似乎是一个不错的起点 我还应该注意 我并没有尝试使我的线性求解器并行 我正在研究的问题在宏观层面上已经是令人尴尬的并行 以下是我编写的 C
  • 在 Linq 查询中使用动态列名称

    foreach Dimension dimensions in Enum GetValues typeof Dimension var r new ReferenceTable dimensions referenceItems List
  • 将旧的 Unity 代码升级到 Unity 5

    在触发按钮上播放动画的代码似乎不起作用 我在 Youtube 上看到了一个视频 内容很简单animation Play 它可以在该视频上运行 但我无法让它在我的计算机上运行 我做错了什么还是团结改变了它 请帮助我在网上找不到解决方案 所有
  • 为什么最小的 int -2147483648 的类型为“long”? [复制]

    这个问题在这里已经有答案了 对于一个学校项目 我必须编写 C 函数 printf 的代码 一切进展顺利 但有一个问题我找不到好的答案 所以我来了 printf PRINTF d t d n 2147483648 告诉我 gcc Werror
  • 当分配返回 0 时,具有空异常规范的运算符 new 调用构造函数

    我有以下声明 void operator new size t s PersistentMemory m throw return m gt allocatePersistentMemory s 我正在测试启动时的内存耗尽 这会导致m gt
  • WCF 服务中的缓冲区大小

    我们有一个 WCF 服务 它执行某些存储过程并将结果返回给 silverlight 客户端 某些存储过程最多返回 80K 行 下面给出的是 web config 中服务的设置
  • 从 AuthorizeAttribute 继承的属性不起作用

    我目前正在尝试根据用户角色在新的 ASP MVC 5 应用程序中实现安全性 目标是防止用户在没有特定角色 或更高角色 的情况下访问某些控制器或控制器方法 根据到目前为止我所读到的问题 我创建了一个继承 AuthorizeAttribute
  • 在链表程序中使用模板时重载 C++ 中的 << 运算符

    我正在尝试实现一个链接列表 但是当我尝试重载 include
  • 为什么我无法通过 lambda 捕获“this”指针?

    考虑以下代码 class A public void foo auto functor this A a this auto functor a The compiler won t accept this instead of a a g
  • 如何使用 .NET 捕获我的桌面视频?

    我想知道是否有任何方法可以使用 NET 捕获我的桌面的视频 截屏视频 我并不是在寻找截屏软件 而只是在寻找一种可以让我自己生成桌面视频的技术 我想过拍摄多个屏幕截图 但我不确定如何以编程方式生成带有图像序列的视频 有人有主意吗 Thanks
  • 打印任何类型的数组和列表的通用方法[重复]

    这个问题在这里已经有答案了 每当我调试一段涉及整数 双精度 字符串等数组或列表的代码时 有时我更喜欢打印它们 我为此所做的是为不同类型编写重载的 printArray printList 方法 for e g 我可能有这 3 种方法来打印各
  • Selenium - 模式对话框存在 - 如何接受信息?

    我有以下问题 在页面上提交一些日期后 我有一个如图所示的模式对话框 我想单击 ENTER 来浏览该模式 但它不起作用 我有以下代码 driver FindElement By CssSelector input submit Click A
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin

随机推荐

  • 将 get 访问器主体克隆/复制为新类型

    我正在从现有类型的动态装配中创建新类型 但仅包含选定的属性 public class EmitTest public Type Create Type prototype Type dynamicBaseType List
  • 从 JavaScript/jQuery 将数组发送到 php [重复]

    这个问题在这里已经有答案了 可能的重复 将数据数组从 php 发送到 javascript https stackoverflow com questions 4290720 send arrays of data from php to
  • 循环访问 VB Web App 中的文本框

    这类问题有几个答案 但对我来说都不是很清楚 而且我没有使用 JQuery 的经验 所以我在这里问 我有一个 VB Web 应用程序 在 Default aspx 中包含一堆文本框 使用 Visual Web Designer 2010 Ex
  • StackExchange.Redis 超时 GET

    我在使用 StackExchange Redis 时遇到超时问题 我已经尝试过在 stackoverflow 上找到的所有内容 这是我得到的 Timeout performing GET XXX inst 4 mgr ProcessRead
  • 无法在单例中创建某些 QML 类型

    我有一个用于样式定义的 QML 单例 定义如下 pragma Singleton import QtQuick 2 2 import QtQuick Controls 1 1 import QtQuick Controls Styles 1
  • Angular4 为存在且公开提供的 json 数据提供 404

    我有一个用 Angular4 编写的测试数据服务 目前看起来是这样的 import Injectable from angular core import Http from angular http import rxjs add ope
  • 如何右对齐内联块元素?

    正如您在下面的 Fiddle 中看到的 http jsfiddle net EvWc4 3 http jsfiddle net EvWc4 3 我目前正在寻找一种方法将第二个链接 link alt 与其父链接 p 的右侧对齐 为什么不使用浮
  • Facebook 图形 API 速率限制和批量请求

    我见过一些人提到的 600 次调用 600 秒的速率限制 例如quora http www quora com Whats the Facebook Open Graph API rate limit 我想知道我是否可以做600batch
  • Flutter 音频播放器返回错误的播放时间?

    我在用着audioplayers 1 1 0从 url 播放音频的插件 玩得很好 但是player onPositionChanged在特定的秒数之后 它会重新启动 并且计时器从 0 开始 这样我的滑块又从 0 开始了 player onP
  • 启动画面在 PhoneGap Build 中不起作用

    无论是 Android 还是 iOS 我都无法让闪屏正常工作 我正在使用 PhoneGap Build 并且我已经像这样设置了 config xml 现在适用于 v3 0 0
  • 如何从 URI 获取完整文件路径

    我想从 URI 获取完整的文件路径 URI 不是图像 而是音乐文件 但如果我像 MediaStore 解决方案那样执行此操作 则如果应用程序用户选择 Astro 作为浏览器而不是音乐播放器 它将无法工作 我该如何解决这个问题 PathUti
  • 搜索数据库 - ASP.NET MVC C#

    我正在尝试在我的 ASP NET MVC C Linq to Sql 网站中实现完整的搜索功能 该网站由大约 3 4 个表组成 其中包含我想要搜索的大约 1 2 列 这是我到目前为止所拥有的 public List
  • UITableView 自定义节标题,重复问题

    我在为自定义 UITableView 部分标题设置动画时遇到问题 目标是创建可折叠的部分 当我第一次点击自定义标题时 它会按预期进行动画处理 但此后每次它都会在原始位置留下重复项并为另一个进行动画处理 图片示例 My Custom Head
  • 将 NA 值替换为组值

    我有一个 df 如下 有 5 个家庭 20 人 家庭中的某些人缺少关于是否拥有医疗卡的数据 我想为这些人提供与家庭中其他人相同的值 不是 NA 值 而是 0 或 1 的真正二进制值 我已经尝试了以下代码 我认为这是朝着正确方向迈出的一步 但
  • 编译时触发 std::vector 的范围检查

    目标 我想要一个范围检查版本std vector s operator 对于我的调试版本 在发布模式下没有范围检查 调试模式下的范围检查显然有利于调试 但它会导致我的发布代码减慢 5 10 这是我希望避免的 可能的解决方案 我在 Strou
  • 如果单元格自动更新,“编辑”功能将不起作用 - 需要解决方法 Google 表格

    当您手动更改单元格时 此代码将按预期工作 function onEdit event assumes source data in sheet named Prepsheet target sheet of move to named To
  • Android应用程序强制关闭时会发生什么

    我很想知道当应用程序在很长一段时间内没有响应时 当用户单击弹出窗口中的 强制关闭 时会发生什么 哪些事件会被解雇 任务会从托盘中删除吗 我认为当一个活动被强制关闭时 dalvik 将清理应用程序缓存并启动后台堆栈中的最后一个活动 但不确定它
  • XSD 两个具有相同名称但属性值不同的元素

    我正在尝试为以下内容定义 XSD 模板
  • 如何修复 python `dlib` 错误:“在平面命名空间 '_png_do_expand_palette_rgb8_neon' 中找不到符号”?

    我收到错误 symbol not found in flat namespace png do expand palette rgb8 neon 尽管发生了错误dlib正在安装相关 Python 版本的软件包 我正在使用 VSCode 以防
  • 为什么匿名类型不能在方法中传递?

    倾向于不从方法返回匿名类型的设计决策是什么 You can从方法返回匿名类型的实例 但因为您无法命名它 所以您无法准确声明该方法将返回什么 因此您必须声明它只返回object 这意味着调用者将无法对属性等进行静态类型访问 尽管他们仍然可以传