我已经问了很长时间这个问题了。想到了发布它。 .Net中的每个类都是从对象类继承的,所以为什么我们在创建新类时不必继承对象类。在这种情况下,框架默认情况下会执行任何操作吗?
class Test
{
public override string ToString()
{
return base.ToString();
}
}
class MyClass : Object
{
public override string ToString()
{
return base.ToString();
}
}
上面两个类的声明有什么区别?
最佳答案
默认情况下,每个class
都继承object
。您无需指定,因为编译器会在编译期间为您完成此操作。
摘自规范的示例:
class A {}
class B: A {}
(...)
由于A
没有显式指定直接基类,因此其直接基类是隐式object
。
您的声明之间没有区别。
对象类类型是所有其他类型的最终基类。 C#中的每种类型都直接或间接地源自对象类类型。
C#5规范
IT意味着,如果您的类C1
已经继承了另一个类C2
,则编译器不会添加object
继承,因为通过C2
类继承它已经可以使用。在继承树的顶部,总是有System.Object
类。