哪些C#类型名称是特殊的?
在什么输入下返回true?从我的简短研究中,我发现属性访问器和运算符重载都有特殊的名称,以及任何名称包含下划线的类型。有人能给我一个完整的描述类型名称是特殊的吗?首先,IsSpecialName不接受任何输入。此外,类型的属性实际上不适用于属性访问器或运算符重载,因为它是类型的属性,并且运算符/访问器不是类型。这与MSDN文章可能告诉您的情况无关 我大胆猜测,当通讯员是哪些C#类型名称是特殊的?,c#,C#,在什么输入下返回true?从我的简短研究中,我发现属性访问器和运算符重载都有特殊的名称,以及任何名称包含下划线的类型。有人能给我一个完整的描述类型名称是特殊的吗?首先,IsSpecialName不接受任何输入。此外,类型的属性实际上不适用于属性访问器或运算符重载,因为它是类型的属性,并且运算符/访问器不是类型。这与MSDN文章可能告诉您的情况无关 我大胆猜测,当通讯员是SpecialName时,它返回true。您可以参考ECMA 335标准,了解应该标记为特殊名称的内容。顺便说一句,您将了解到它
SpecialName
时,它返回true。您可以参考ECMA 335标准,了解应该标记为特殊名称的内容。顺便说一句,您将了解到它是运算符和属性访问器之类的东西。这解释了MSDN文章中的混淆可能来自何处
我认为,在
类型上
实现此属性主要是为了编译器的利益,因此可能需要额外的(与ECMA 335的要求相比)特殊名称处理。(这可能因编译器而异)。ECMA-335中发布的CLI规范是此类信息的可靠来源。在文档中搜索rtspecialname
(CLR专用的名称)和specialname
(工具专用的名称)。rtspecialname的specialname属性已启用。提供以下点击:
- 枚举类型的基础
字段值\uuuuu
- 属性的getter和setter访问器方法
- 事件的add、remove和fire访问器方法
- 运算符重载
- 类的
方法,构造函数.ctor
- 类的
方法,即静态构造函数.cctor
类的.ctor方法,构造函数
实际上是指默认构造函数(由编译器自动定义),并且(def.ctor)需要携带两个标志:MethodAttributes.RTSpecialName
和MethodAttributes.SpecialName
。