2009-11-20 28 views
5

He tropezado con ejemplos utilizando cualquiera de las dos notaciones. No puedo encontrar nada al respecto que indique cuál es el más común, por qué se permiten 2 anotaciones, y si en realidad hay alguna diferencia sutil entre las dos.¿hay alguna diferencia entre [Serializable] y [Serializable()] en C#?

¿alguien una idea?

+0

Buena pregunta ... siempre me lo pregunté. –

Respuesta

23

No, no hay diferencia funcional.

¿Por qué los 2 estilos diferentes, usted pregunta? La primera notación está permitida por brevedad. La segunda anotación se permite debido a que algunos atributos toman parámetros:

[Category("Foobar related methods.")] 
public void Foo() 
{ 
} 

También tenga en cuenta que [Serializable] es realmente corto la mano para [SerializableAttribute()] - C# permite omite el sufijo Atributo así como el constructor vacío parens.

+0

gracias por la respuesta rápida! – Toad

6

ambos usan el teclado predeterminado, no hay ninguna diferencia.

9

No, no hay diferencia. [Serializable] es solo azúcar sintáctico para [Serializable()] porque la sintaxis de C# le permite perder los corchetes del constructor si hay un constructor de atributo predeterminado.

Tenga en cuenta que ambos son realmente azúcar sintáctica para [SerializableAttribute()] como declaraciones de atributos también le permiten perder el sufijo de atributo.

+0

gracias por su respuesta – Toad

Cuestiones relacionadas