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

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

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

这相当于

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

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

不,不幸的是,它不是默认的构造函数。

当你写:

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

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

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

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