构造函数中的C#默认值与两个用于序列化的构造函数相同

时间:2011-11-04 16:28:13

标签: c# serialization constructor default-value

当我为构造函数提供默认值

  public MyClass(string description = null) { .... }

相当于

  public MyClass() { .... }
  public MyClass(string description) { .... }

序列化而言。换句话说,默认构造函数是否可用?实际上它是,但是当我使用序列化时,我会遇到一些问题吗?

2 个答案:

答案 0 :(得分:7)

没有。遗憾的是,它不是默认构造函数。

当你写:

public MyClass(string description = null) { .... }

您实际上是在创建一个接受字符串参数的构造函数,但是有一个属性标记该属性的默认值。这与在类上具有默认构造函数不同。

答案 1 :(得分:2)

是的,在这种情况下你会遇到问题。

我试图通过反射调用你描述的构造函数,并抛出TargetInvokationException :(参数计数不匹配)。