【问题标题】:is there a difference between [Serializable] and [Serializable()] in c#?c# 中的 [Serializable] 和 [Serializable()] 有区别吗?
【发布时间】:2009-11-20 14:07:48
【问题描述】:

我碰到过使用这两种表示法中的任何一种的例子。我找不到任何关于它的信息,说明哪一个是常见的,为什么允许使用 2 个符号,以及两者之间是否真的存在任何细微差别。

谁有想法?

【问题讨论】:

  • 好问题..我自己一直想知道。

标签: c# .net serialization


【解决方案1】:

不,没有功能差异。

你问为什么会有两种不同的风格?为简洁起见,允许使用第一种表示法。允许使用第二种表示法,因为某些属性带有参数:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我用谷歌搜索了“[Serializable()] vs [Serializable]”。繁荣!得到了我的答案,这已经等待了我十多年的问题。我喜欢它。
    【解决方案3】:

    都使用默认的c'tor,完全没有区别。

    【讨论】:

      猜你喜欢
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 2011-03-20
      • 1970-01-01
      • 2015-12-20
      • 2011-01-22
      相关资源
      最近更新 更多