我最近一直在使用System.Version
class并且想知道为什么它和其他一些类似简单的类被标记为Sealed
(NotInheritable
在VB中)。为什么CLR中的某些类被密封?
与一些更复杂的课程不同,我没有看到这样的课程通过密封会获得什么。
据我可以告诉sourceVersion
并不意味着任何理由。
是否有已发布/官方(即不是基于意见)的原因?是否有可能由此导致的一些问题?特别是对于Version
的情况,或者对于类似简单的类别,则不合格。
背景:我不得不重新创建Version
类,以便通过双向绑定使用它,因为MS版本具有ReadOnly
属性。但我需要知道,如果派生会导致一些问题
请问这个问题的答案足够http://stackoverflow.com/a/7777674/920557?请参阅[2]部分 –
@EugeneKomisarenko谢谢,有点。第1部分对于为什么一个*应用程序*程序员可以封闭一个类而言是显而易见的(与CLR程序员相反)。第二部分给出的信息听起来合乎逻辑,但基于异端,并没有多大意义,因为MS基础类是为了拯救我们的工作,而不是强迫我们复制它。如果可能的话,我更喜欢更具体的来源/原因。 – Toby
我相信在设计继承或禁止它。设计继承需要一些工作,并且通常会进一步限制实现。考虑到这一点,类应该被密封或设计为能够继承它们。如果你有一个你无法控制的基类实现呢?一个密封的类可以防止你无法控制的基类问题,并且不打算继承。 – Codexer