var 关键字并不总是有效?

2023-11-27

C#,VS 2010。有人请解释一下为什么我不能使用var在我下面的代码中!

var props = TypeDescriptor.GetProperties(adapter);

// error CS1061: 'object' does not contain a definition for 'DisplayName'
foreach (var prop in props)
{
    string name = prop.DisplayName;
}

// No error
foreach (PropertyDescriptor prop in props)
{
    string name = prop.DisplayName;
}

TypeDescriptor.GetProperties返回一个PropertyDescriptorCollection与实例PropertyDescriptor。为什么编译器看不到这个?


TypeDescriptor.GetProperties返回一个只有一个类GetEnumerator返回非泛型的实现IEnumerator。其类型Current财产是object- 这是编译器可以推断的唯一类型,所以这就是你的类型prop变量将是。

第二foreach使用PropertyDescriptor代替var作为类型prop实际上执行了一个转换object to PropertyDescriptor.

假设这段代码:

PropertyDescriptor x = // get from somewhere;
object o = x;
PropertyDescriptor y = (PropertyDescriptor)o;

同样的情况也发生在第二个foreach循环每个项目。


你可以添加一个Cast<PropertyDescriptor>()得到一个通用的IEnumerable<T>与实施GetEnumerator返回IEnumerator<T>。如果您这样做,您可以使用var in the foreach loop:

var props = TypeDescriptor.GetProperties(adapter).Cast<PropertyDescriptor>();

// No error
foreach (var prop in props)
{
    string name = prop.DisplayName;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

var 关键字并不总是有效? 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 如何计算孩子的数量?

    我有一个清单 ul li li li li li li ul 我需要 jQuery 来计算列表中的项目数 您可以使用 length 像这样 var count ul li length length告诉选择器找到了多少个匹配项 因此这会计算
  • 更新 mongodb 中的嵌套数组

    我在 mongodb 中有一个文档 其中包含需要更新的 2 级深度嵌套对象数组 如下所示 id 1 items id 2 blocks id 3 txt hello 如果只有一层深数组 我可以使用位置运算符来更新其中的对象 但对于第二层 我
  • Google App Engine 标准环境还是灵活环境?

    我陷入了选择 Google App Engine Standard 和 Google App Engine Standard 之间的抉择 适合现实世界生产的灵活环境 我肯定想使用Java 需要使用Firebase 最新版本 进行身份验证和推
  • 为子字符串搜索建立索引?

    我想在数十亿个字符串中进行常规子字符串搜索 这个要求与一般的全文搜索有点不同 因为我希望查询 ubst 也可以点击 substr Lucene 或 Sphinx 能够做到这一点吗 如果没有 您认为最好的方法是什么 这种情况下的最佳索引结构是
  • iOS 和 Android 共享 HTTP 深度链接?

    我正在尝试通过 URL 通过电子邮件等共享 启动我的本机应用程序 Android 似乎只响应 HTTP 深层链接 URL 例如 http myapp com stuff 并且 iOS 仅响应非 HTTP 自定义深层链接 URL 例如 mya
  • SPA - Firebase 和 .Net WebApi 2 身份验证

    我有一个用 AngularJs 编写的单页应用程序 此时框架无关紧要 该应用程序托管在 IIS 中 它由 index html 和一堆客户端资产组成 在后端 我有 WebApi 2 它也作为单独的应用程序托管在 IIS 中 对于客户端身份验
  • 不安全的 JavaScript 尝试通过 URL 访问框架

    我已将 Vimeo 合并到我正在构建的 WordPress 主题中 但出现以下错误 不安全的 JavaScript 尝试通过 URL 访问框架http themes ibrogram com beta blog 来自带有 URL 的框架ht
  • 停止在 jqgrid 中调整列大小

    如何使 jqgrid 的所有列不可调整大小 目前我认为每一列都必须指定属性 ressized false 我可以为整个网格指定吗 从版本 3 8 2 开始 jqGrid 支持一项非常有用的功能 栏模板 我赞扬该功能可能不太正确 因为该功能是
  • 当浏览器重新加载/返回时,如何防止数据库被再次写入?

    我正在编写一个小型 Web 应用程序 用于写入数据库 Perl CGI 和 MySQL CGI 脚本从表单中获取一些信息并将其写入数据库 然而 我注意到 如果我在网络浏览器上点击 重新加载 或 返回 它会再次将数据写入数据库 我不想要这个
  • Rails 返回:[BUG] 分段错误

    如果我跑rails s I get Users adam rvm gems ruby 1 9 3 p327 gems pg 0 13 2 lib pg ext bundle BUG Segmentation fault ruby 1 8 7
  • Java - 将小写转换为大写而不使用 toUppercase()

    我正在尝试创建一个简短的程序 将所有大写字母转换为小写字母 从命令行输入 以下编译但没有给出我期望的结果 这会是什么原因呢 例如 java toLowerCase BANaNa gt 给出香蕉的输出 public class toLower
  • VS2010 抛出“无法复制文件“obj\x86\Debug\[file].exe”,因为找不到该文件。”

    我正在编写一个 Windows Phone 8 游戏 需要许多支持桌面应用程序 关卡编辑器等 由于我只有 VS 的 Express 版本 因此我使用 2010 for Windows Phone 来创建这些游戏 2012 不提供创建 Win
  • 创建零填充 JavaScript 数组的最有效方法?

    在 JavaScript 中创建任意长度的零填充数组的最有效方法是什么 ES6引入Array prototype fill 它可以这样使用 new Array len fill 0 不确定它是否很快 但我喜欢它 因为它很短并且具有自我描述性
  • Python内存模型

    我有一个很大的清单 假设我这样做 是的 我知道代码非常不Python 但为了示例 n 2 32 2 for i in xrange 10 7 li i n 工作正常 然而 for i in xrange 10 7 li i i 2 消耗大量
  • 如何使用 cl 编译 Window API 程序?

    我正在尝试使用 Windows SDK 命令提示符编译一个简单的 C Windows API 程序 以下是该计划的摘录 include
  • 解码 JPEG 文件的部分内容

    我正在尝试以有限的内存占用加载大 JPEG 文件 数百兆像素 的一部分 我只需要大约 20000 条扫描线 1000 条 看来 libjpeg 及其分支 libjpeg turbo 的当前实现没有提供跳过不需要的 19k 扫描线而不对其进行
  • 选择mongodb中的嵌套字段

    我在 mongodb 中有一个集合 其中字段嵌套在语言根下 en title eng title content eng content it title it title content it content common attribu
  • 使用 adb 连接到 Raspberry Pi 3

    我如何连接adb到 Raspberry Pi 3 运行安卓事物 Android Things for Raspberry Pi 仅支持使用 adb over ip 通过以下命令连接到 adb adb connect
  • Django管理列表显示+外键=空更改列表

    我在 django admin 中遇到了一个奇怪的问题list display 每当我将外键添加到list display整个更改列表视图变为空白 仅显示条目总数 模型 py class Organization models Model
  • var 关键字并不总是有效?

    C VS 2010 有人请解释一下为什么我不能使用var在我下面的代码中 var props TypeDescriptor GetProperties adapter error CS1061 object does not contain