如上所述,从C#中的Object继承是否多余?
下面的两套代码是否导致定义了等效的对象?
class TestClassUno : Object
{
// Stuff
}
与
class TestClassDos
{
// Stuff
}
我在MSDN上四处窥探,但找不到完美的结论。
最佳答案
如果未指定,则每个class
定义都将隐式继承自System.Object
,因此这两个定义是等效的。
这两个唯一的不同是,如果有人在同一 namespace 中实际定义了另一个Object
类型。在这种情况下,Object
的本地定义将具有优先权并更改继承对象
namespace Example {
class Object { }
class C : Object { }
}
非常危险的情况,但是如果我以前没有看过,就不会指出
请注意,如果您使用
object
而不是Object
,则情况并非如此。 C#关键字object
是System.Object
的类型别名,因此它与Example.Object
不匹配。namespace Example2 {
class Object { }
class C : Object { } // Uses Example.Object
class D : object { } // Uses System.Object
}
当然,如果您有一个真正邪恶的开发人员,您仍然可能与
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
}
关于c# - 要在C#中从Object继承吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10742021/