Cri*_*scu 45 .net c# oop inheritance access-modifiers
ReSharper建议改变类中public构造函数的可访问性,但它没有说明这背后的基本原理.abstractprotected
你能解开一些光吗?
Jar*_*Par 78
仅仅因为公开在抽象类中没有意义.根据定义,抽象类不能直接实例化.它只能由派生类型的实例实例化.因此,唯一应该访问构造函数的类型是它的派生类型,因此受保护比公共更有意义.它更准确地描述了可访问性.
Dan*_*ker 15
如果你创建构造函数public而不是protected抽象类,它在技术上没有任何区别.构造函数的可访问性/可见性仍然完全相同:相同的类或派生类.这两个关键字对于所有意图和目的都具有难以区分的效果.
因此,这种选择只是风格问题:protected满足面向对象的精明人的类型.
默认情况下,反射只会包含构造函数public,但无论如何都无法调用该构造函数.
IntelliSense将public在键入时显示构造函数new,但无论如何都无法调用该构造函数.
程序集的元数据将反映构造函数是公共的还是受保护的.