C# 属性名称缩写

2024-01-22

C# 属性的名称中怎么可能有“Attribute”(例如DataMemberAttribute) 但初始化时没有这个后缀?例如。:

[DataMember]
private int i;

根据C# 语言规范 http://msdn.microsoft.com/en-us/library/aa664616(VS.71).aspx,

按照约定,属性类以后缀命名Attribute. An 属性名称形式的类型名称可以包含或省略此后缀。

这是 C# 编译器提供的快捷方式,绝不是 CLR 功能。编译器对属性进行特殊处理的另一个例子是过时属性 http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.aspx属性:这个强制一个compiler发出警告/错误,但对于 CLR 来说没有特殊含义。

至于属性是如何解析的,请参见上面的链接。把它们加起来:

如果找到带有或不带有此后缀的属性类,则存在歧义,并导致编译时错误。如果attribute-name拼写如下,其最右边的标识符是逐字标识符 http://msdn.microsoft.com/en-us/library/aa664670(VS.71).aspx,则仅匹配没有后缀的属性,从而能够解决这种歧义。

“逐字标识符”是带有@ prefix.

继续MSDN:

using System;

[AttributeUsage(AttributeTargets.All)]
public class X: Attribute
{}

[AttributeUsage(AttributeTargets.All)]
public class XAttribute: Attribute
{}

[X]                  // Error: ambiguity
class Class1 {}

[XAttribute]         // Refers to XAttribute
class Class2 {}

[@X]                  // Refers to X
class Class3 {}

[@XAttribute]         // Refers to XAttribute
class Class4 {}

属性[X]是不明确的,因为它可以指代X or XAttribute。使用逐字标识符可以在这种罕见的情况下指定确切的意图。属性[XAttribute]是明确的(尽管如果有一个名为XAttributeAttribute!)。如果类的声明X被删除,那么两个属性都引用名为的属性类XAttribute, 如下:

using System;
[AttributeUsage(AttributeTargets.All)]
public class XAttribute: Attribute
{}

[X]                  // Refers to XAttribute
class Class1 {}

[XAttribute]         // Refers to XAttribute
class Class2 {}

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

C# 属性名称缩写 的相关文章

  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 回发或回调参数无效。使用“”启用事件验证

    当我从客户端回发页面时 出现以下错误 我有修改客户端 asp ListBox 的 JavaScript 代码 我们该如何解决这个问题 错误详细信息如下 Server Error in XXX Application Invalid post
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 将自定义 ValueProviderFactories 添加到 ASP.NET MVC3?

    我试图尝试将 Protobuf ValueProviderFactory 添加到 MVC3 以便我可以选择 MIME 类型并将原始数据反序列化为操作参数的对象 我还可以使用它来更改默认的 Json 序列化器 看着JsonValueProvi
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • JQuery 到 asmx 在 Windows 2008 R2 SP1 上失败

    自从安装 SP1 以来 我们在从 JQuery 客户端代码调用 asmx 页面时遇到了问题 IIS 将 JQuery post 调用指向他的默认 404 页面 我们对环境进行了角色恢复 断言此问题是由 SP1 引起的 并且测试证实了这一点
  • mongodb-java POJO不返回id

    我是 MongoDB 的新手 在这里有点疯狂 我正在使用最新的 mongo java driver 版本和 dropwizard 我使用 POJO 写入 DDBB 它有效 但是 当尝试获取元素时 我没有得到实际的 id 这是我尝试过的 DD
  • 如何在数字的最后三位数字之前插入小数点?

    我有一个数字 需要添加小数以进行格式化 该数字保证在 1000 到 999999 之间 我已经以其他方式介绍了其他可能性 这是我无法理解的 我需要在最后 3 位数字之前添加小数 例如 1000 gt 1 000 23513 gt 23 51
  • 我可以向 HTML 标记添加自定义属性吗?

    我可以向 HTML 标记添加自定义属性吗 如下所示
  • 在 Google App Engine 中创建表单自动完成

    我想为标签字段构建一个自动完成功能 就像 App Engine 上的 SO 一样 知道我应该如何进行这个过程吗 服务器端算法 自动完成应该有什么逻辑 应用程序引擎实施 数据存储架构应该是什么 嘿 几天前我就遇到了这个问题 只要您有想要搜索的
  • 如何在 ASP.Net Core Razor 页面中返回带有模型的页面

    如何重定向到页面并传递其模型 就像我们在 MVC 中所做的那样return View model MyModel 我尝试过的 return RedirectToPage Notify new Model notifierVM 注意 我要返回
  • 如何立即关闭 C 程序?

    我正在编写 C 代码 在其中分析一些数据 我已将程序设置为仅处理 100 个数据输入 当输入超过 100 个时 就会出现分段错误 我想创建一种方法 以便当输入数量超过 100 时 用户将收到警告并且程序将终止 我知道如何从主要功能中简单地做
  • MyGroups 未在 Communicator.UIAutomation 中实现

    我正在开发一个浏览器外的 Silverlight 应用程序 它提供了一些 MS Office Communicator 2007 控件 我正在使用 与 SDK 一起安装的文档指出 IMessenger2 界面中有一个 MyGroups 属性
  • 测试 swift 异步函数超时

    如何编写一个单元测试来检查异步函数是否不会超时 我正在尝试常规XCTestExpectation 但是因为await暂停一切 是等不到期待 在下面的代码中 我正在检查loader perform 执行时间不超过1秒 func testLoa
  • 在 KnockoutJS 中获取可观察的多维数组(对象)

    我正在使用 Knockout 构建一个应用程序 发现它非常有用 虽然 我在获取多维数组 对象 可观察时遇到问题 目前我正在使用以下结构 self form ko observableArray ko utils arrayMap initi
  • /bin/sh: python: 找不到命令

    我刚刚安装了 Python3 和 Komodo 我正在尝试运行一个简单的脚本 但收到 py 命令未找到的错误 我对 Komodo 和 Python 都是新手 所以不知道该去哪里寻找 我看到另一篇文章也有同样的问题 但没有提供有帮助的解决方案
  • 虚拟继承的内部机制

    C 示例代码 class A public A int class B public virtual A public B int b A b class C virtual public A public C int c A c clas
  • 在 jQuery Mobile 中的 Ajax 调用上显示页面加载微调器

    我正在使用 ajax 填充我的移动网络应用程序中的列表 我想做的是让 jQuery 移动加载微调器在执行此调用时出现 并在列表填充后消失 当前版本的 JQM 使用 mobile showPageLoadingMsg and mobile h
  • 如何使操作栏图标在单击时发生变化

    我在 Sherlock ActionBar 中有一组紫色背景的白色图标 我想让它们在被点击时变成深紫色 我有相同的深紫色图标 所以我想让这些可绘制对象显示在按下状态 现在 我知道如何在整个应用程序主题中执行此操作 但这意味着我必须对所有图标
  • 阻止本地网站在 Chrome 上强制使用 HTTPS?

    Chrome 已更新为在某些保留的域名上强制使用 HTTPS 不幸的是我的本地计算机之一出现在列表中 我的机器名称是 dev Chrome 现在自动重定向 http dev http dev 到 https dev https dev 我在
  • Java获取本地IP [重复]

    这个问题在这里已经有答案了 我正在尝试获取本地IP 它应该与 System out println Inet4Address getLocalHost getHostAddress or InetAddress addr InetAddre
  • jquery map函数对表的使用

    我有这张表 table thead tr th UtstyrsID th th Navn th th Utlevert th th Kommentar th tr thead tbody tr td 1 td tr tbody table
  • Java - 帮助在任意锚点绘制文本的最佳库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我熟悉如何使用各种 FontMetrics 函数使文本垂直 水平居中等 但是 我正在寻找一个支持在相对
  • 使用组合键中的一列作为外键

    我试图看看是否可以使用复合键中的一列作为外键 我得到了奇怪的结果 CREATE TABLE TESTPARENT PK1 INT PK2 INT PRIMARY KEY PK1 PK2 Query OK 0 rows affected 0
  • C# 属性名称缩写

    C 属性的名称中怎么可能有 Attribute 例如DataMemberAttribute 但初始化时没有这个后缀 例如 DataMember private int i 根据C 语言规范 http msdn microsoft com e