在C#中组合多个属性

Bra*_*bby 34 c# syntax attributes coding-style

以下语法之间是否存在功能差异...

[Foo, Bar]
public class Baz {}
Run Code Online (Sandbox Code Playgroud)

......这个语法?

[Foo]
[Bar]
public class Baz {}
Run Code Online (Sandbox Code Playgroud)

假设在编译时每个都产生相同的结果,这是首选形式?

LBu*_*kin 41

没有功能差异.这是一个方便和风格的问题.

大多数情况下,我倾向于在自己的行上看到属性,以便将它们分开并易于阅读.能够使用行注释//单独删除属性也很好.

[A]
[B]
//[C] disabled
public class Foo {} 
Run Code Online (Sandbox Code Playgroud)

  • 此外,因为属性往往比"A"和"B"具有更长的名称,所以如果将它们全部放在一起,线条可以变得很长! (6认同)

Nix*_*Nix 11

从可读性的角度来看,优选单独的属性.

想想你传递某种类型参数的情况

 [Foo(typeof(int)), Bar(typeof(decimal), MessageTemplate="Bar")]
Run Code Online (Sandbox Code Playgroud)

 [Foo(typeof(int))]
 [Bar(typeof(decimal), MessageTemplate="Bar")]
Run Code Online (Sandbox Code Playgroud)

我还要说,如果你可以将它们组合成一个,它们应该是一个标签.