我是新來的.NET ..和我很困惑,在C#析構函數機制..please澄清爲什麼Finalize方法不能覆蓋
在C#中的析構函數轉換由CLR敲定方法。 如果我們嘗試覆蓋它(不使用析構函數),將會出錯 錯誤2請勿重寫object.Finalize。相反,提供一個析構函數。
但似乎mscorlib.dll中的Object calss實現已將finalize定義爲protected override void Finalize(){},那麼爲什麼我們不能重寫它,那是什麼虛函數。
爲什麼這樣的設計是否與C++析構函數概念一致?
另外,當我們進入對象類的定義時,沒有提及finalize方法,那麼hmscorlib.dll定義如何顯示finalize函數。 這是否意味着默認的析構函數被轉換爲finalize方法。
public class Object
{
public Object();
public virtual bool Equals(object obj);
public static bool Equals(object objA, object objB);
public virtual int GetHashCode();
public Type GetType();
protected object MemberwiseClone();
public static bool ReferenceEquals(object objA, object objB);
public virtual string ToString();
}
我認爲他們明白,並且正在尋求解釋_why_。 – 2010-04-06 17:48:59