小编som*_*raj的帖子

为什么不允许Finalize方法覆盖

我是.net的新手.我对C#中的析构函数机制感到困惑.请澄清

在C#中,析构函数由CLR转换为finalize方法.如果我们尝试覆盖它(不使用析构函数),将收到错误错误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();
}
Run Code Online (Sandbox Code Playgroud)

.net c#

5
推荐指数
2
解决办法
3069
查看次数

标签 统计

.net ×1

c# ×1