나는 최근에 System.Version
class을 사용 해왔다. 왜 그 클래스와 다른 유사한 클래스들도 Sealed
(VB에서는 NotInheritable
)으로 표시되어 있는지 궁금해했다.CLR의 일부 클래스가 봉인 된 이유는 무엇입니까?
좀 더 복잡한 클래스와는 달리 나는 그러한 클래스가 봉인 됨으로써 얻을 수있는 것을 보지 못합니다.
source에 관해서는 Version
에 대해 아무런 의미가 없습니다.
게시/공식 (의견을 기반으로하지 않음) 이유가 있습니까? 거기에서 파생 됨으로 인해 발생할 수있는 문제가 있습니까? 특히 Version
의 경우 또는 비슷한 간단한 클래스에 대해서는 실패한 경우
배경 : MS 버전이 ReadOnly
속성을 가지고 있으므로 양방향 바인딩에서 사용하기 쉽도록 Version
클래스를 다시 만들어야했습니다. 유도하는 DateTime
유사한 "값"을 나타내는 클래스, 일부 문제
그 대답은 충분히 http://stackoverflow.com/a/7777674/920557겠습니까 구현? [2] 부분을 참조하십시오. –
@EugeneKomisarenko 감사합니다. Part 1은 * application * 프로그래머가 (CLR 프로그래머와는 반대로) 클래스를 봉인 할 수있는 이유에 대해 분명합니다. 2 부에서는 논리적으로 들리지만 heresay를 기반으로하는 정보를 제공하며 MS 기본 수업을 통해 업무를 수행하는 데 필요한 정보를 제공하고이를 복제하도록 강요하지 않습니다. 가능하다면 좀 더 구체적인 소스/이유를 선호합니다. – Toby
나는 상속을 디자인하거나 그것을 금지한다고 믿는다. 상속을위한 설계는 약간의 작업이 필요하며 일반적으로 구현을 더 제한 할 것입니다. 이를 염두에두고 클래스는 봉인되거나 상속받을 수 있도록 디자인되어야합니다. 당신이 제어 할 수없는 기본 클래스의 구현을 가지고 있다면 어떨까요? 밀폐 된 클래스는 제어 할 수없고 상속되지 않는 기본 클래스 문제를 방지합니다. – Codexer