2009-11-20 66 views
5

我遇到了使用兩種符號中的任何一種的例子。我找不到任何關於它的事情,它告訴哪一個是常見的,爲什麼允許2個符號,以及兩者之間是否存在任何細微差別。c#中的[Serializable]和[Serializable()]有區別嗎?

任何想法?

+0

好問題..總是自己想。 – 2009-11-20 14:33:40

回答

23

沒有,沒有功能差異。

爲什麼2種不同的風格,你問?爲簡潔起見,允許使用第一種表示法。第二個符號是允許的,因爲一些屬性取參數:

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

還要注意的是[Serializable接口]實際上只是短手[SerializableAttribute()] - C#,您可以省略屬性後綴以及空構造括號。

+0

感謝您的快速回答! – Toad 2009-11-20 14:21:51

6

都使用默認c'tor,根本沒有任何區別。

9

不,沒有區別。 [Serializable]只是[Serializable()]的語法糖,因爲如果存在默認的屬性構造函數,C#語法可以讓您錯過構造函數的括號。

請注意,由於屬性聲明還允許您錯過Attribute後綴,因此兩者都是[SerializableAttribute()]的語法糖。

+0

感謝您的回答 – Toad 2009-11-20 14:22:27

相關問題