C# 对象派生

C# Object derivation

根据规格:

"All classes in the .NET Framework are derived from Object"

classes 如何从对象基 class 派生而不显式地将对象 class 写为父对象?

即:

public sealed class String : IComparable, ICloneable, IConvertible, IEnumerable, IComparable<string>, IEnumerable<char>, IEquatable<string> 

另请注意:您可以访问的所有这些基本方法都在每个 class/type:

中实现

等于、ReferenceEquals、GetHashCode、GetType、ToString。

这意味着总是有来自 System.Object 的隐藏继承。 "object" 只是一个别名——当你在 VS 中 select "object" 时,它也会突出显示所有 System.Object classes 以表明身份(反之亦然)。它似乎很难在 C# 中实现,我想不可避免地要从 'object' 继承。它是允许您访问 任何东西 的基础,无论它是什么 - 尽管您几乎无法用它做任何事情而不把它扔回去。

object x = new *anything*;

另外,抽象的class实例不能被赋值,但那是在'abstract'结束时主动阻止它,而不是在'object'接收它。

如果 object 以其他方式工作,您必须从 'System.Object' 继承所有基 classes,这将是乏味且毫无意义的。无论如何,对象并不意味着要被排除在外,因为它会造成巨大的损失,因为在它有意义的时候不再有特定的方式来引用 things(今天它对我来说确实如此)当我编写 class 来收集对象、过滤掉空值并以格式化字符串输出它们的 ToString() 以用于调试目的时)。

另一个有趣的地方是'object'可以抽象化,这样object x = new object();不再工作。因为对象到底是什么?这真的没什么,但仍然是一些东西。它比 bool 变量产生的信息少。但 C# 开发人员决定不这样做,这似乎会导致更简单。还有 is/are 没有 good/sufficient 理由禁止它。