C#에 샘플이 있는지 궁금합니다. 상업적인 의도보다는 상속을 금지하는 단일 샘플을 생각할 수 없으므로 C# 자체의 실제 사례를 알고 싶습니다..Net 자체에는 상속받을 수없는 클래스가 있습니까?
봉인 된 클래스에 대해 알고 있는데, 나는 C# 자체에서 값 유형과 암시 적으로 밀폐 된 구조체가 아닌 몇 가지 예제를 찾고 있습니다.
C#에 샘플이 있는지 궁금합니다. 상업적인 의도보다는 상속을 금지하는 단일 샘플을 생각할 수 없으므로 C# 자체의 실제 사례를 알고 싶습니다..Net 자체에는 상속받을 수없는 클래스가 있습니까?
봉인 된 클래스에 대해 알고 있는데, 나는 C# 자체에서 값 유형과 암시 적으로 밀폐 된 구조체가 아닌 몇 가지 예제를 찾고 있습니다.
당신은 어떤 구조체, sealed
클래스 또는 static
클래스에서 상속 할 수 없습니다 . C#에서는 Delegate
및 Enum
을 비롯한 여러 가지 '특수'유형을 사용하는 것을 금지합니다. 이러한 유형을 사용하기위한 다른 구성을 제공합니다.
가장 눈에 띄는 예는 System.String
입니다.
이처럼 상속하려고한다면 :
public class CustomString : String { }
당신이 오류가 나타납니다 :
'CustomString': cannot derive from sealed type 'string'
을 그리고 닷넷 프레임 워크 많은 다른 예는있다 . 리플렉션을 사용하여 빠른 비교를 수행했으며 mscorlib
(v4.0) 만해도 856 개의 공개 유형이 있고 619 개의 비공개 공용 유형 (인터페이스 포함)과 비교됩니다.
예. sealed
인 모든 클래스는 기본 클래스로 사용할 수 없습니다.
sealed
클래스에 대한 자세한 내용은 here을 참조하십시오.
.NET에서 sealed
클래스의 몇 가지 예하면 다음과 같습니다
sealed
클래스 외에도 static
클래스는 상속 될 수 없습니다 (about 참조). 예 : System.Linq.Enumerable
.
public static class Inherited : System.Linq.Enumerable
{
}
이것은 제대로 작동하지 않습니다.
"상업적 의도"에 대해서는 확실하지 않지만'sealed 클래스 '는 [Fragile Base Class] (http://en.wikipedia.org/wiki/Fragile_base_class) 문제를 방지합니다. 하루 하루의 예가 ['Thread'] (http://msdn.microsoft.com/en-us/library/system.threading.thread (v = vs.110) .aspx) 클래스입니다. 그것을 상속하고 행동을 바꾸고 싶지 않습니다. –
아하, :) 이제는 말이 되네, 당신의 실례가 실제로 의미가 있습니다. 링크 : Thanks for the link :) – Breeze
문제 없음 :) 전체 목록을 원한다면 .NET 참조 소스를 찾아 보거나 다운로드하여 다른 모든 사례를 검색 할 수 있습니다. http://referencesource.microsoft.com/ –