Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C对象派生_C#_.net_C# 4.0 - Fatal编程技术网

C# C对象派生

C# C对象派生,c#,.net,c#-4.0,C#,.net,C# 4.0,根据规范: .NET Framework中的所有类都是从对象派生的 如何从对象基类派生类,而不显式地将对象类写入父类 即: public sealed class String : IComparable, ICloneable, IConvertible, IEnumerable, IComparable<string>, IEnumerable<char>, IEquatable<string> 另请注意:您可以访问的所有基本方法都在每个类/类型中实现

根据规范:

.NET Framework中的所有类都是从对象派生的

如何从对象基类派生类,而不显式地将对象类写入父类

即:

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

另请注意:您可以访问的所有基本方法都在每个类/类型中实现:

Equals、ReferenceEquals、GetHashCode、GetType、ToString

这意味着始终存在来自System.Object的隐藏继承。对象只是一个别名-当您在VS中选择对象时,它还将高亮显示所有System.object类以指示标识,反之亦然。它似乎很难在C中实现,我想从“object”继承是不可避免的。这是基础,它允许你访问任何东西,不管它是什么——即使你几乎不能做任何事情而不把它扔回来。
object x = new *anything*;
此外,抽象类实例不能被分配,但这是在“抽象”的末尾主动阻止它,而不是在“对象”上接收它

若对象不能正常工作,那个么您就必须从“System.object”继承所有基类,这将是乏味和毫无意义的。对象并不意味着要被排除在外,因为它将导致巨大的损失,因为在它有意义的时候,没有特定的方式来引用任何东西。今天,我编写了一个类来收集对象,过滤掉空值,并以格式化字符串的形式输出它们的ToString,以便进行调试


另一个有趣的观点是“object”可以被抽象,因此objectx=新对象;不再有效。因为物体到底是什么?这其实没什么,但仍然很重要。它的信息比布尔变量少。但是C开发人员决定不这样做,这似乎带来了更多的简单性。还有/没有充分/充分的理由禁止它。

这是隐含的,因为根据定义,.NET Framework中的所有类都是从Object派生的。这有点像说“我所有的孩子都是人”。我不必显式地指定它,因为它在定义上是正确的。反过来想一想——如果该规范是真的,那么强制您指定它从对象继承的价值是什么?没有好处-因此它不是必需的:当类\类型包含在类\基中时,它指定要声明的类的直接基类。如果一个类声明没有类\u基,或者如果类\u基只列出接口类型,那么直接基类被假定为objectOk,我可以理解这一点,但从技术角度来看,这是如何获得的?想象一下,如果显式继承自Object,将如何获得它。它是以完全相同的方式获得的-无需指定它显式地从对象继承。换句话说,它是隐式的还是显式的对它的实现方式没有影响。就这么简单。这是个骗局!