1

来自 MSDN:抽象类设计

X 不要在抽象类型中定义公共或受保护的内部构造函数。

√ 在抽象类中定义一个受保护的或内部的构造函数。

这里有矛盾吗?或者这是否意味着构造函数应该是或受保护的或内部的,但不能同时是受保护的和内部的?

4

1 回答 1

2

是的,这确实意味着构造函数不应同时受保护和内部,但受保护或内部都可以。受保护(和)内部与公共一样具有误导性,因为抽象类的构造函数只能从继承者调用。
单个受保护或内部会有所不同,因为它们允许不同范围的继承者(内部仅允许来自当前程序集的继承者,受保护允许任何继承者)。但是 public 将可访问性扩展到抽象类本质上可以提供的范围。受保护的内部只是为抽象类做一个受保护的。
这就是他们误导的原因。

于 2013-11-02T17:14:52.827 回答