9

在研究实现 Visual Basic Power ( ) 运算符的问题^时,我了解到System.Runtime.CompilerServices.SpecialNameAttribute该类允许在 C# 中实现此运算符以在 VB 中使用。

有趣的是,文档指出:

SpecialNameAttribute类当前未在 .NET Framework 中使用,但保留供将来使用。

我的问题是:使用此属性时还有哪些巧妙的技巧可用?

(附带问题 - 文档是否不准确,或者这是一个语义问题,因为该属性显然由编译器使用,但不是框架?)

4

1 回答 1

12

正如您在查看从该代码生成的 IL 时所知道的那样,编译器使用该属性来打开方法声明中的specialname IL 属性。寻找其使用的最佳位置是 ECMA 335 CLI 规范。

一般来说,它用于将标识符标记为具有特殊用途。例如,您会看到它在属性的 getter 和 setter 方法、事件访问器方法和运算符重载上打开。注意与rtspecialname IL 属性的区别,specialname 属性影响工具而不是抖动。就像本例中的 VB.NET 编译器一样,它现在将 op_Exponent() 区分为运算符重载,而不仅仅是具有有趣名称的普通方法。

请注意,这都是内置的行为,您不能提取编译器和抖动未被编程识别的技巧。

于 2012-11-07T15:42:18.737 回答