如上所述,从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#关键字objectSystem.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/

10-14 16:38
查看更多