如果我创建了一个属性 public class SomeAttribute : Attribute {}
并且我像这样使用它:
[SomeAttribute]
public class ClassA{}
或这个:
[Some]
public class ClassA{}
有什么区别吗?允许它工作的底层机制是什么?
最佳答案
按照惯例,CLR 属性以单词 Attribute
结尾(它们也源自 System.Attribute
)。使用属性时,可以安全地显式包含该词,或者省略它(只是为了减少视觉困惑)并让编译器为您包含它。
C# 规范的第 17.1 节说:
在第 17.2 节的深处,它解释了如果两个版本都存在,编译器将不会打破平局:
在这种情况下,您可以通过指定 @Some
或 @SomeAttribute
来解决编译错误。 (@
表示有点不常见的“逐字标识符”功能。
关于c# - 用 [SomeAttribute] 和 [Some] 装饰类的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8753821/