2010-03-30 21 views
31

Czy istnieje funkcjonalna różnica między następującą składnią ...łączenie wielu atrybuty w C#

[Foo, Bar] 
public class Baz {} 

... i to składnia?

[Foo] 
[Bar] 
public class Baz {} 

Zakładając, że każdy z nich daje identyczne wyniki po skompilowaniu, co jest preferowaną formą?

+0

W życiu widziałem tylko atrybuty napisane osobno, takie jak [Foo] [Bar] i robię to sam. Sądzę jednak, że to naprawdę zależy od ciebie. – Jess

Odpowiedz

35

Nie ma różnicy funkcjonalne. To kwestia wygody i stylu.

Najczęściej dostrzegam atrybuty na ich własnych liniach jako sposób na zachowanie ich odrębności i łatwości czytania. Miło jest też móc użyć komentarza linii //, aby usunąć atrybuty pojedynczo.

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

Ponadto, ponieważ atrybuty mają zazwyczaj dłuższe nazwy niż "A" i "B", więc linie mogą stać się dość długie, jeśli je wszystkie zsumujesz! – Ken

2

Zwykle stosuję atrybuty. Ale używam ich głównie z WCF, gdzie lista parametrów może być dość duża.

[OperationContract()] 
[WebGet(...)] 
string MyMethod(string input); 
8

Z punktu widzenia czytelności preferowane są oddzielne atrybuty.

Pomyśl o przypadku, gdy jesteś przechodzącej jakiś rodzaj parametru

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

kontra

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

Chciałbym również argumentować, jeśli można je połączyć w jeden, powinny być one jeden znacznik.