在研究实现Visual Basic Power(^
)运算符的a question时,我了解到System.Runtime.CompilerServices.SpecialNameAttribute
类允许在C#中实现此运算符以便在VB中使用。
有趣的是,documentation州:
SpecialNameAttribute 类当前未在.NET Framework中使用,但保留供将来使用。
我的问题是:使用此属性时还有哪些其他巧妙的技巧?
(附带问题 - 文档不准确或者这是一个语义问题,因为该属性显然是由编译器使用而不是框架?)
答案 0 :(得分:10)
正如您从该代码查看生成的IL时所知,编译器使用该属性打开方法声明中的 specialname IL属性。寻找其用途的最佳位置是ECMA 335 CLI规范。
通常,它用于将标识符标记为具有特殊用途。例如,你会看到它在属性的getter和setter方法,事件访问器方法和操作符重载上启用。请注意与 rtspecialname IL属性的区别,specialname属性会影响工具,而不会影响抖动。就像本例中的VB.NET编译器一样,它现在将op_Exponent()区分为运算符重载,而不仅仅是一个带有趣名称的普通方法。
请注意,这是所有烘焙行为,您无法通过编程和抖动编程来识别这些技巧。