2010-03-30 14 views
31

Gibt es einen funktionalen Unterschied zwischen der folgenden Syntax ...Kombinieren mehrerer Attribute in C#

[Foo, Bar] 
public class Baz {} 

... und diese Syntax?

[Foo] 
[Bar] 
public class Baz {} 

Angenommen, jede produziert identische Ergebnisse, wenn kompiliert, welches ist die bevorzugte Form?

+0

Ich habe nur Attribute gesehen, die separat geschrieben wurden, wie [Foo] [Bar], und was ich selbst mache. Ich nehme an, es liegt wirklich an dir. – Jess

Antwort

35

Es gibt keinen funktionalen Unterschied. Es ist eine Frage von Bequemlichkeit und Stil.

Meistens neige ich dazu, Attribute in ihren eigenen Zeilen zu sehen, um sie getrennt und leicht lesbar zu halten. Es ist auch schön, den Zeilenkommentar // verwenden zu können, um Attribute einzeln zu entfernen.

[A] 
[B] 
//[C] disabled 
public class Foo {} 
+5

Auch weil Attribute dazu neigen, längere Namen zu haben als 'A' und' B', so dass Zeilen ziemlich lang werden können, wenn Sie sie alle zusammenfügen! – Ken

2

Ich stapeln Attribute in der Regel. Aber ich benutze diese auch hauptsächlich mit WCF, wo die Parameterliste ziemlich groß werden kann.

8

Vom Standpunkt der Lesbarkeit sind separate Attribute bevorzugt.

Denken Sie an den Fall, dass Sie irgendeine Art von Parameter

[Foo(typeof(int)), Bar(typeof(decimal), MessageTemplate="Bar")] 

gegen

[Foo(typeof(int))] 
[Bar(typeof(decimal), MessageTemplate="Bar") 

Ich würde auch argumentieren, sind vorbei, wenn man sie in eine kombinieren könnten, sollten sie ein Tag sein.

Verwandte Themen