Din*_*mar 12 .net c# oop inheritance
我对以下代码如何工作有点困惑
public class DefaultClass
{
public override bool Equals(object obj)
{
return base.Equals(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:我不是继承任何类,但我仍然能够重写Equals方法.此代码在VS2010中完美编译.知道这是如何工作的吗?
Pat*_*man 32
因为你的DefaultClass'继承' object是默认的.
你现在压倒一切object.Equals.
我理解这种困惑.MSDN说像这样的类不继承任何其他类,但它确实(object):
继承:无.例:
class ClassA { }
Object类是所有类的父类,所有类都从它继承.所以你Default Class也继承了这个Object类
这是.NET Framework中所有类的最终基类; 它是类型层次结构的根.
您可以使用树结构来理解这一点:
System.Object
/ \
/ \
/ \
SomeProject.DefaultClass SomeProject.SomeOtherBaseClass
/ \
/ \
/ \
SomeProject.ChildClass1 SomeProject.ChildClass2
Run Code Online (Sandbox Code Playgroud)
另请注意,请查看Eric Lippert撰写的这篇非常相关的文章,它可以帮助您理解Object类: - 并非所有内容都来自于对象