IsSpecialName在什么输入下返回true?根据我的简短研究,我发现属性访问器和运算符重载具有特殊名称,以及名称包含下划线的任何类型。任何人都可以给我一个类型名称特殊的案例的完整描述吗?
答案 0 :(得分:11)
ECMA-335中发布的CLI规范是这样的信息的合适来源。在文档中搜索rtspecialname
(CLR特有的名称)和specialname
(工具特有的名称。特殊名称属性为rtspecialnames打开。给出这些命中:
value__
字段.ctor
方法,构造函数.cctor
方法,静态构造函数答案 1 :(得分:1)
首先,IsSpecialName不接受任何输入。 Type的属性也不适用于属性访问器或运算符重载,因为它是 Type 的属性,而运算符/访问器不是类型。尽管MSDN文章可能会告诉您这一点。
我猜想当通讯员TypeAttribute为SpecialName
时,它会返回true。您可以参考ECMA 335标准,找出应该标记为特殊名称的内容。顺便说一下,你会发现它是运营商和财产访问者之类的东西。这解释了MSDN文章中的混淆可能来自何处。
我相信在Type
这个属性的实现主要是为了编译器的利益,这可能需要额外的(与ECMA 335的要求相比)特殊名称处理。 (这可能因编译器而异)。