2009-11-20 17 views
5

Mi sono imbattuto in esempi utilizzando una delle due notazioni. Non riesco a trovare nulla su ciò che dice quale è comune, perché sono consentite 2 notazioni, e se c'è effettivamente una sottile differenza tra i due.c'è una differenza tra [Serializable] e [Serializable()] in C#?

qualcuno un'idea?

+0

Buona domanda .. me lo sono sempre chiesto. –

risposta

23

No, nessuna differenza funzionale.

Perché i 2 diversi stili, chiedi? La prima notazione è consentita per brevità. La seconda notazione è consentito perché alcuni attributi prendono parametri:

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

Si noti inoltre che [Serializable] è in realtà solo a breve portata di mano per [SerializableAttribute()] - C# consente di omettere il suffisso Attribute così come il costruttore vuoto parentesi.

+0

grazie per la rapida risposta! – Toad

6

entrambi utilizzano il valore predefinito, non c'è alcuna differenza.

9

No, non c'è differenza. [Serializable] è solo zucchero sintattico per [Serializable()] perché la sintassi C# consente di saltare le parentesi del costruttore se esiste un costruttore di attributi predefinito.

Si noti che entrambi sono davvero zucchero sintattico per [SerializableAttribute()] poiché le dichiarazioni di attributo consentono anche di perdere il suffisso Attributo.

+0

grazie per la tua risposta – Toad

Problemi correlati