Pok*_*u22 5 c# .net-attributes
这可能已经被问到了,但很难找到.
[Something]和之间有什么区别[SomethingAttribute]?
以下两个编译:
[DefaultValue(false)]
public bool Something { get; set; }
Run Code Online (Sandbox Code Playgroud)
[DefaultValueAttribute(false)]
public bool SomethingElse { get; set; }
Run Code Online (Sandbox Code Playgroud)
除了外观之外,它们之间是否有任何差异?它们使用的一般准则是什么?
在大多数情况下,它们是相同的.如前所述,您通常可以使用它们互换,除非您同时使用DefaultValue和DefaultValueAttribute定义.通过使用逐字标识符(@),您可以使用这两种方法而不会出现歧义错误.
C#LS部分17.2使这一点更清晰:
[AttributeUsage(AttributeTargets.All)]
public class X: Attribute {}
[AttributeUsage(AttributeTargets.All)]
public class XAttribute: Attribute {}
[X] // Error: ambiguity
class Class1 {}
[XAttribute] // Refers to XAttribute
class Class2 {}
[@X] // Refers to X
class Class3 {}
[@XAttribute] // Refers to XAttribute
class Class4 {}
Run Code Online (Sandbox Code Playgroud)
这是指属性的实际用法.当然,如果您需要使用类型名称,例如使用typeof或反射时,您需要使用您提供类型的实际名称.
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |