gpt4 book ai didi

c# - 从 C# 中的 Object 继承是多余的吗?

转载 作者:IT王子 更新时间:2023-10-29 04:08:52 29 4
gpt4 key购买 nike

如前所述,在c#中继承Object是否多余?下面两组代码是否定义了等效的对象?

class TestClassUno : Object
{
// Stuff
}

对比

class TestClassDos
{
// Stuff
}

我在 MSDN 上四处窥探,但没能找到任何完美结论。

最佳答案

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

这两者唯一不同的情况是,如果有人实际上在同一个命名空间中定义了另一个 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com