CLR 要求每個類型最終都要繼承自 System.Object 類型
1 //隱式繼承 Object 2 class Employee { 3 ... 4 } 5 6 //顯示繼承繼承 Object 7 class Employee : System.Object { 8 ... 9 } 類型定義(C#)描述
System.object 的公有方法
Equals:如果兩個對象具有相同的值,方法返回 true
GetHashCode:方法返回對象的值的散列碼。如果一個對象被用作散列表的一個鍵值,那麼該對象的類型應該重寫 GetHashCode().
ToString:重寫該方法使其返回一個表示對象狀態的字符串
GetType:方法返回一個類型為繼承自Type的對象實例,其標識了該方法所屬對象的類型。返回的 Type 對象可以和反射類一起使用來獲得類型的元數據信息。(* GetType 方法是一個非虛方法,這可以防止一個類通過重寫該方法而隱藏它的類型,從而破壞類型安全)
System.object 的受保護方法
MemberwiseClone:非虛方法,它創建一個新的實例,並將其字段設置為和this對象的字段相同,最後返回新創建的實例引用。關於該方法的更多信息,請參見
Finalize:虛方法,當垃圾收集器判定某個對象為可回收的垃圾時,垃圾收集器會在對象內存被回收前調用此方法。那些內存回收時需要資源清理的類型應該重寫該方法。
CLR 要求所有的對象都要用 new 操作符來創建(產生 newobj IL 指令)。下面的語句展示了怎樣創建一個 Employee 對象:
Employee e = new Employee("ConstructorParaml");
下面是 new 操作符所執行的工作:
在 new 完成了這些所有操作後,它將返回一個指向新創建對象的引用。在上面的例子中,該引用被保存在變量 e 中,其類型為 Employee。
沒有和 new 操作符對應的 delete 操作符。也就是說,在CLR中,我們無法顯示釋放對象所占用的資源。CLR 引入一種垃圾收集環境來自動檢測哪些不再被使用或訪問的對象,並自動釋放它們的內存。