【发布时间】:2016-10-16 11:05:26
【问题描述】:
根据 MSDN 的design guide for constructors,
“如果你没有在一个类型上显式声明任何构造函数,很多语言(比如C#)会自动添加一个公共的默认构造函数。(抽象类得到受保护的构造函数。) 向类添加参数化构造函数会阻止编译器添加默认构造函数。这通常会导致意外的重大更改。”
为什么不:
“如果你没有在一个类型上显式声明任何默认构造函数,很多语言(比如C#)会自动添加一个公共的默认构造函数。(抽象类得到一个受保护的构造函数。)"
这背后的原因是什么?
【问题讨论】:
-
请注意,术语“默认构造函数”仅适用于 C# 编译器添加的那个。如果你自己添加一个无参数构造函数,这不是默认构造函数。
-
这与
private存在的原因相同:它消除了 API 用户的危险和不受欢迎的选项。private对于该语言的功能来说是绝对不必要的。它只会带走选项。
标签: c# .net constructor