c#中[Serializable]和[Serializable()]之间有区别吗?

时间:2009-11-20 14:07:49

标签: c# .net serialization

我使用两种符号中的任何一种都会遇到一些例子。我找不到任何关于它的内容,告诉哪一个是常见的,为什么允许2个符号,以及两者之间是否存在任何细微差别。

有人有想法吗?

3 个答案:

答案 0 :(得分:24)

不,没有功能差异。

为什么要问两种不同的款式?第一种表示法是为了简洁。允许使用第二种表示法,因为某些属性采用参数:

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

另请注意,[Serializable]实际上只是[SerializableAttribute()]的简写 - C#允许您省略Attribute后缀以及空构造函数parens。

答案 1 :(得分:9)

不,没有区别。 [Serializable]只是[Serializable()]的语法糖,因为如果有默认的属性构造函数,C#语法会让你错过构造函数括号。

请注意,两者都是[SerializableAttribute()]的语法糖,因为属性声明也会让你错过属性后缀。

答案 2 :(得分:6)

都使用默认的c'tor,没有任何区别。