在C#中从Object继承冗余?

Kep*_*lah 31 .net c#

如上所述,在c#中从Object继承是多余的吗?下面的两组代码是否会导致定义相同的对象?

class TestClassUno : Object
{
    // Stuff
}
Run Code Online (Sandbox Code Playgroud)

class TestClassDos
{
    // Stuff
}
Run Code Online (Sandbox Code Playgroud)

我在MSDN上偷了一下,但却找不到任何完全确定的东西.

Jar*_*Par 33

如果未指定,则每个class定义都将隐式继承,System.Object因此这两个定义是等价的.

这两者之间唯一不同的是,如果有人Object在同一名称空间中实际定义了另一种类型.在这种情况下,本地定义Object将优先并更改继承对象

namespace Example {
  class Object { } 
  class C : Object { } 
}
Run Code Online (Sandbox Code Playgroud)

非常一个角落的情况,但如果我以前没见过它就不会指出它

请注意,如果您使用object而不是,则情况并非如此Object.C#关键字object是一个类型别名System.Object,因此它不匹配Example.Object.

namespace Example2 { 
  class Object { } 
  class C : Object { } // Uses Example.Object
  class D : object { } // Uses System.Object
}
Run Code Online (Sandbox Code Playgroud)

当然,如果你有一个真正邪恶的开发者,你仍然可能会引起混淆 object

namespace System { 
  class Object { 
    private Object() { } 
  }
}

namespace Example3 {
  // This will properly fail to compile since it can't bind to the private
  // Object constructor.  This demonstrates that we are using our definition
  // of Object instead of mscorlib's 
  class C : object { } // Uses our System.Object
}
Run Code Online (Sandbox Code Playgroud)

  • 本地`Example.Object`是否仍然继承自`System.Object`? (7认同)

Are*_*ren 20

是的,如果定义为,一切最终都从一个对象继承class.将显式继承保留在代码之外.


Md *_*ker 8

是的,从类中继承对象是多余的


Pra*_*ana 7

MSDN:Object类:支持.NET Framework类层次结构中的所有类,并为派生类提供低级服务.这是.NET Framework中所有类的最终基类; 它是类型层次结构的根.

检查这项研究:从对象继承?如何调查.

在此输入图像描述


Nik*_*wal 6

Object是.Net中所有类的母亲.它上面没有任何东西.

所有类都继承自它.所以这段代码

class TestClassDos
{
    // Stuff
}
Run Code Online (Sandbox Code Playgroud)

自动表示它是从对象继承的.

证明:您可以将任何实体强制转换为对象,如果它是从它继承的话.

Object类摘要说

// Supports all classes in the .NET Framework class hierarchy and provides low-level
// services to derived classes. This is the ultimate base class of all classes
// in the .NET Framework; it is the root of the type hierarchy.
Run Code Online (Sandbox Code Playgroud)