哪些C#类型名称是特殊的?

哪些C#类型名称是特殊的?,c#,C#,在什么输入下返回true?从我的简短研究中,我发现属性访问器和运算符重载都有特殊的名称,以及任何名称包含下划线的类型。有人能给我一个完整的描述类型名称是特殊的吗?首先,IsSpecialName不接受任何输入。此外,类型的属性实际上不适用于属性访问器或运算符重载,因为它是类型的属性,并且运算符/访问器不是类型。这与MSDN文章可能告诉您的情况无关 我大胆猜测,当通讯员是SpecialName时,它返回true。您可以参考ECMA 335标准,了解应该标记为特殊名称的内容。顺便说一句,您将了解到它

在什么输入下返回true?从我的简短研究中,我发现属性访问器和运算符重载都有特殊的名称,以及任何名称包含下划线的类型。有人能给我一个完整的描述类型名称是特殊的吗?

首先,IsSpecialName不接受任何输入。此外,类型的属性实际上不适用于属性访问器或运算符重载,因为它是类型的属性,并且运算符/访问器不是类型。这与MSDN文章可能告诉您的情况无关

我大胆猜测,当通讯员是
SpecialName
时,它返回true。您可以参考ECMA 335标准,了解应该标记为特殊名称的内容。顺便说一句,您将了解到它是运算符和属性访问器之类的东西。这解释了MSDN文章中的混淆可能来自何处


我认为,在
类型上
实现此属性主要是为了编译器的利益,因此可能需要额外的(与ECMA 335的要求相比)特殊名称处理。(这可能因编译器而异)。

ECMA-335中发布的CLI规范是此类信息的可靠来源。在文档中搜索
rtspecialname
(CLR专用的名称)和
specialname
(工具专用的名称)。rtspecialname的specialname属性已启用。提供以下点击:

  • 枚举类型的基础
    值\uuuuu
    字段
  • 属性的getter和setter访问器方法
  • 事件的add、remove和fire访问器方法
  • 运算符重载
  • 类的
    .ctor
    方法,构造函数
  • 类的
    .cctor
    方法,即静态构造函数

“有人能给我一个类型名称特殊的情况的完整描述吗”-这就是这些文档的目的。@James除了这些文档之外,在这一点上非常模糊。[可能需要一些编译器进行特殊处理]建议它向那些编译器提供提示。为什么要使用它?API路由中的操作选择会忽略具有特殊名称的方法。此外,它对反射很有用。不幸的是,关于它似乎没有太多严格的信息“fire accessor”是什么你提到了吗?我在MSDN上找不到它。C#不允许编写该访问器。其他语言也允许,比如C++/CLI(raise方法)和VB.NET(RaiseEvent方法)。我可能完全错了,但我认为
类的.ctor方法,构造函数
实际上是指默认构造函数(由编译器自动定义),并且(def.ctor)需要携带两个标志:
MethodAttributes.RTSpecialName
MethodAttributes.SpecialName