我很想知道是否有任何樣品在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'
而且有很多在 .NET Framework中其他的例子。我使用反射進行了快速比較,單獨在mscorlib
(v4.0)中有856個密封公共類型,而非密封公共類型(包括接口)爲619個。
除了sealed
類,static
類也不能被繼承,請參閱about。例如:System.Linq.Enumerable
。
public static class Inherited : System.Linq.Enumerable
{
}
這不工作了。
我不確定「商業意圖」,但「密封」類防止[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)class - 你真的不'我想繼承它並改變它的行爲。 –
啊哈,:)現在有道理,你的線程示例真的很有意義。並感謝您的鏈接:) – Breeze
沒問題:)如果你想要一個完整的列表,你可以瀏覽或下載.NET參考資料來源和搜索所有其他案例http://referencesource.microsoft.com/ –