2010-03-30 21 views
31

¿Hay una diferencia funcional entre la sintaxis siguiente ...la combinación de múltiples atributos en C#

[Foo, Bar] 
public class Baz {} 

... y esta sintaxis?

[Foo] 
[Bar] 
public class Baz {} 

Suponiendo que cada uno produce resultados idénticos una vez compilados, ¿cuál es la forma preferida?

+0

Solo he visto atributos escritos por separado, como [Foo] [Bar], y es lo que hago yo mismo. Aunque supongo que realmente depende de ti. – Jess

Respuesta

35

No hay diferencia funcional. Es una cuestión de conveniencia y estilo.

A menudo, suelo ver los atributos en sus propias líneas como una forma de mantenerlos separados y fáciles de leer. También es bueno poder usar el comentario de línea // para eliminar atributos individualmente.

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

Además, porque los atributos tienden a tener nombres más largos que 'A' y' B', por lo que las líneas pueden ser bastante largas si las juntamos todas. – Ken

2

Normalmente apilar atributos. Pero también los uso principalmente con WCF, donde la lista de parámetros puede ser bastante grande.

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

Desde el punto de vista de legibilidad, se prefieren atributos separados.

pensar en el caso en el que está de paso algún tipo de parámetro

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

frente

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

también yo diría, si pudiera combinarlas en una sola, que debe ser una etiqueta.

Cuestiones relacionadas