你能省略没有参数的属性的括号吗?

时间:2010-03-15 15:20:31

标签: c# .net attributes

我注意到当我有[Serializable]而不是[Serializable()]时,代码仍会编译。

是否有规则可以省略括号?这是一个好习惯吗?除非我遗漏了某些内容,否则它对我来说似乎更具可读性。

4 个答案:

答案 0 :(得分:6)

关于最佳实践,没有特别的规则,我在subect上看到过。

一般来说,我发现手动输入属性的人省略了空白的内容,但代码生成几乎总是明确地包含它们。

答案 1 :(得分:6)

是的,你可以省略括号。

 [Serializable]  
 [Serializable()]
 [SerializableAttribute] 
 [SerializableAttribute()]

有4种方法可以写出完全相同的属性。

一般做法是始终省略Attribute部分 空()通常也会被省略,但实际上并不重要。当然,您需要它们来设置任何参数或属性。

答案 2 :(得分:2)

当您要使用的属性构造函数没有参数时,您可以错过(),并且您不想指定任何可选参数(属性值)。

有关详细信息,请参阅here

答案 3 :(得分:1)

从语言角度来看,省略该属性是合法的。我不知道有任何关于它的最佳实践,但总的来说,如果没有必要,我发现开发人员会省略它们。