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

Hor*_*ter 8 c# serialization constructor default-value

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

  public MyClass(string description = null) { .... }
Run Code Online (Sandbox Code Playgroud)

这相当于

  public MyClass() { .... }
  public MyClass(string description) { .... }
Run Code Online (Sandbox Code Playgroud)

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

Ree*_*sey 7

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

当你写:

public MyClass(string description = null) { .... }
Run Code Online (Sandbox Code Playgroud)

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

  • 究竟.可选参数只是一个编译技巧.它们只影响CALLER,因此如果调用者省略了参数,编译器将使用默认值. (4认同)