如上所述,在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)
MSDN:Object类:支持.NET Framework类层次结构中的所有类,并为派生类提供低级服务.这是.NET Framework中所有类的最终基类; 它是类型层次结构的根.
检查这项研究:从对象继承?如何调查.

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)
| 归档时间: |
|
| 查看次数: |
3270 次 |
| 最近记录: |