我最近一直在使用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