2010-03-30 18 views
31

C'è una differenza funzionale tra la seguente sintassi ...Combinare più attributi in C#

[Foo, Bar] 
public class Baz {} 

... e questa sintassi?

[Foo] 
[Bar] 
public class Baz {} 

Supponendo che ciascuno produca risultati identici una volta compilato, qual è la forma preferita?

+0

Ho visto solo gli attributi scritti separatamente, come [Foo] [Bar], ed è quello che faccio io stesso. Suppongo che dipenda davvero da te, comunque. – Jess

risposta

35

Non c'è alcuna differenza funzionale. È una questione di convenienza e stile.

Molto spesso, tendo a vedere gli attributi sulle proprie linee come un modo per tenerli separati e facili da leggere. È anche bello poter utilizzare il commento di linea // per rimuovere gli attributi singolarmente.

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

Inoltre, poiché gli attributi tendono ad avere nomi più lunghi di 'A' e' B', quindi le linee possono diventare piuttosto lunghe se le si mettono tutte insieme! – Ken

2

Generalmente impilato gli attributi. Ma li uso principalmente anche con WCF, dove l'elenco dei parametri può diventare piuttosto grande.

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

Da un punto di vista della leggibilità sono preferiti gli attributi separati.

Pensa al caso in cui si passa un certo tipo di parametro

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

contro

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

Vorrei anche discutere, se li è possibile combinare in un unico, che dovrebbe essere un tag.

Problemi correlati