【发布时间】:2018-07-04 11:56:37
【问题描述】:
根据规范:
“.NET Framework 中的所有类都派生自 Object”
如果没有明确地将 Object 类写为父类,如何从对象基类派生类?
IE:
public sealed class String : IComparable, ICloneable, IConvertible, IEnumerable, IComparable<string>, IEnumerable<char>, IEquatable<string>
【问题讨论】:
-
这是隐含的,因为根据定义它是正确的(“.NET Framework 中的所有类都派生自 Object”)。这有点像说“我所有的孩子都是人类”。我不必明确指定它——因为根据定义它是正确的。 换个角度想一想——如果那个规范是真的(它是真的),那么强制你指定它继承自对象的值是什么?不会有任何好处 - 因此它不是必需的。
-
Base classes: "当
class_type包含在class_base中时,它指定了正在声明的类的直接基类。如果类声明没有class_base,或者如果class_base仅列出接口类型,直接基类假定为object" -
好的,这个我可以理解,但是从技术的角度来看,这是如何获得的呢?
-
想象一下,如果你明确地从 Object 继承,它将如何获得它。它以完全相同的方式获得 - 无需显式指定它从 Object 继承。 换句话说,它是隐式还是显式对其实现方式没有影响。
-
写作
class Foo { }是写作class Foo : object { }的简写。就这么简单。这是编译器的诡计!