我遇到了使用两种符号中的任何一种的例子。我找不到任何关于它的事情,它告诉哪一个是常见的,为什么允许2个符号,以及两者之间是否存在任何细微差别。c#中的[Serializable]和[Serializable()]有区别吗?
任何想法?
我遇到了使用两种符号中的任何一种的例子。我找不到任何关于它的事情,它告诉哪一个是常见的,为什么允许2个符号,以及两者之间是否存在任何细微差别。c#中的[Serializable]和[Serializable()]有区别吗?
任何想法?
没有,没有功能差异。
为什么2种不同的风格,你问?为简洁起见,允许使用第一种表示法。第二个符号是允许的,因为一些属性取参数:
[Category("Foobar related methods.")]
public void Foo()
{
}
还要注意的是[Serializable接口]实际上只是短手[SerializableAttribute()] - C#,您可以省略属性后缀以及空构造括号。
感谢您的快速回答! – Toad 2009-11-20 14:21:51
都使用默认c'tor,根本没有任何区别。
不,没有区别。 [Serializable]
只是[Serializable()]
的语法糖,因为如果存在默认的属性构造函数,C#语法可以让您错过构造函数的括号。
请注意,由于属性声明还允许您错过Attribute后缀,因此两者都是[SerializableAttribute()]
的语法糖。
感谢您的回答 – Toad 2009-11-20 14:22:27
好问题..总是自己想。 – 2009-11-20 14:33:40