在msdn規範中,我可以注意到System.Object
是.Net中的最終基類。 他們說System.ValueType
是一個抽象類,從System.Object
繼承和覆蓋像Equals
,Compare
等方法... 值類型,如bool
,int
等。從System.ValueType
所有其他.NET對象繼承System.Object
繼承。C#System.Object是最終基類
我對此有2個問題。
- 什麼是System.Object的需要?爲什麼不是這裏的首選界面?
上午假設它僅具有2直接兒童(忽略,我們可以創建更多),這是System.ValueType和System.ReferenceType兩者都具有完全不同的實現。
**編輯:**沒有System.ReferenceType。只有Sytem.Object和Sytem.ValueType(覆蓋基類)。 道歉在這裏。
因此可能需要System.Object來處理基本的CLR功能,如使用new()創建對象,強制實施默認構造函數,GC等?
- 當我編譯
Sytem
dll時,看到bool的實現,我只看到了一個struct。
對於一個類(比如Exception),我看不到繼承System.ReferenceType或System.Object。這個繼承是如何處理的?
逸岸,什麼是通用類型系統做給MyCustomClass
,使其從System.Object
繼承(因爲繼承是在編譯時確定正在考慮CTS是做什麼的)
請隨時指正/編輯文章如果我的理解錯誤。
沒有'System.ReferenceType'類,所以我不知道從哪裏得到。 – Servy
所有結構都隱式地從'System.ValueType'繼承,這就是爲什麼你沒有在反編譯的C#中看到它的原因。看看IL,它就在那裏。 –
@Servy:oops .. tat是我的錯誤..我編輯了帖子 – Raghav