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

Toa*_*oad 6 .net c# serialization

我使用两种符号中的任何一种都进入了示例.我找不到任何关于它的信息,告诉哪一个是常见的,为什么允许2个符号,以及两者之间是否存在任何微妙的差异.

有人有想法吗?

Jud*_*ngo 24

不,没有功能差异.

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

[Category("Foobar related methods.")]
public void Foo()
{
}
Run Code Online (Sandbox Code Playgroud)

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


Gre*_*ech 9

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

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


DxC*_*xCK 6

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