根据 MSDN 的构造函数设计指南,
“如果您在类型上没有显式声明任何构造函数,则许多语言(如 C#)将自动添加公共默认构造函数。 (抽象类获得受保护的构造函数。)向类添加参数化构造函数会防止编译器添加默认构造函数。 这通常会导致意外的破坏性变化。”
为什么不这样说:
“如果您在类型上没有显式声明任何默认构造函数,则许多语言(如 C#)将自动添加公共默认构造函数。 (抽象类获得受保护的构造函数。)”
这背后的原因是什么?
“如果您在类型上没有显式声明任何构造函数,则许多语言(如 C#)将自动添加公共默认构造函数。 (抽象类获得受保护的构造函数。)向类添加参数化构造函数会防止编译器添加默认构造函数。 这通常会导致意外的破坏性变化。”
为什么不这样说:
“如果您在类型上没有显式声明任何默认构造函数,则许多语言(如 C#)将自动添加公共默认构造函数。 (抽象类获得受保护的构造函数。)”
这背后的原因是什么?
private
存在的原因:它从API用户中消除了危险和不良选项。对于语言的功能来说,private
是严格不必要的。它只是消除了一些选项。 - usr