我已经问了很长时间这个问题了。想到了发布它。 .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类。

09-25 18:36
查看更多