IsSpecialName在哪些输入下返回 true?根据我的简短研究,我发现属性访问器和运算符重载具有特殊名称,以及名称中包含下划线的任何类型。谁能给我一个类型名称特殊情况的完整描述?
问问题
1361 次
2 回答
11
ECMA-335 中发布的 CLI 规范是此类信息的不错来源。在文档中搜索rtspecialname
(CLR 专用的名称) 和specialname
(工具专用的名称。为 rtspecialnames 打开 specialname 属性。给出这些命中:
value__
枚举类型的基础字段- 属性的 getter 和 setter 访问器方法
- 事件的添加、删除和触发访问器方法
- 运算符重载
- 类的
.ctor
方法,构造函数 - 类的
.cctor
方法,静态构造函数
于 2013-11-05T12:28:59.200 回答
1
首先 IsSpecialName 不接受任何输入。此外,Type 的属性并不真正适用于属性访问器或运算符重载,因为它是Type的属性,并且运算符/访问器不是类型。尽管 MSDN 文章可能会告诉您,但还是会这样。
我冒昧猜测,当对应的TypeAttribute为时,它会返回 true SpecialName
。您可以参考 ECMA 335 标准以找出应该标记为特殊名称的内容。顺便说一句,您将了解到它是运算符和属性访问器之类的东西。这解释了 MSDN 文章中的混淆可能来自哪里。
我相信Type
这个属性主要是为了编译器的利益而实现的,因此可能需要额外的(与 ECMA 335 要求相比)特殊名称处理。(这可能因编译器而异)。
于 2013-11-05T12:24:42.280 回答