C#对象派生

时间:2018-07-04 11:56:37

标签: c# .net c#-4.0

根据规范:

  

“。NET Framework中的所有类均源自对象”

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

IE .:

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

1 个答案:

答案 0 :(得分:0)

另一个注意事项:每种类/类型都实现了您可以访问的所有那些基本方法:

等于,ReferenceEquals,GetHashCode,GetType,ToString。

这意味着从System.Object始终存在隐藏的继承。 “对象”仅仅是一个别名-当您在VS中选择“对象”时,它还将突出显示所有System.Object类以指示身份(反之亦然)。它似乎很难在C#中实现,我想不可避免地要从“对象”继承。这是使您可以访问任何内容的基础,无论它是什么-即使您几乎不做任何事情都无法回退它。

object x = new *anything*;

此外,不能分配抽象类实例,但这是在“抽象”的末尾以主动阻止它,而不是在“对象”的末尾以接收它。

如果object可以以其他方式工作,则必须从'System.Object'继承所有基类,这将是乏味且毫无意义的。无论如何,不​​打算排除对象,因为对象将失去意义,因为它将不再有某种特定的方式来引用事物(并且今天我写这篇文章时,对我来说也是如此)一个用于收集对象,过滤出null并以格式化字符串输出其ToString()以便调试的类)。

另一个有趣的一点是,可以将“对象”抽象化,从而使对象x =新对象();不再起作用。因为对象还是什么?真的没什么,但还是有的。它比布尔变量产生的信息少。但是C#开发人员决定不这样做,这似乎可以简化操作。另外,也没有/没有充分/充分的理由禁止它。