以下语法之间是否存在功能差异......
[Foo, Bar]
public class Baz {}
......还有这个语法?
[Foo]
[Bar]
public class Baz {}
假设编译时每个都产生相同的结果,这是首选形式?
答案 0 :(得分:40)
没有功能差异。这是一个方便和风格的问题。
大多数情况下,我倾向于在自己的行上看到属性,以便将它们分开并易于阅读。能够使用行注释//
分别删除属性也很不错。
[A]
[B]
//[C] disabled
public class Foo {}
答案 1 :(得分:11)
从可读性的角度来看,优选单独的属性。
考虑一下您传递某种类型参数的情况
[Foo(typeof(int)), Bar(typeof(decimal), MessageTemplate="Bar")]
与
[Foo(typeof(int))]
[Bar(typeof(decimal), MessageTemplate="Bar")]
我也会争辩说,如果你把它们组合成一个,它们应该是一个标签。
答案 2 :(得分:2)
我通常会堆叠属性。但是我也主要在WCF中使用它们,参数列表可以变得非常大。
[OperationContract()]
[WebGet(...)]
string MyMethod(string input);