它是真实的。净, 所有 类继承的系统。对象。

什么我发现自相矛盾的,是一些方法上的系统。目的-即

  • 公共虚拟 字符串 ToString();
  • 公共虚拟 bool 平等(目objA,对象objB);

系统。串的继承的系统。对象:

[Serializable]
public class String : Object { /*...*/ }

系统。布尔是继承的系统。对象:

[Serializable]
public struct Boolean : Object { /*....*/ }

是什么会在盖下,允许该系统。目类允许分类被用来作为回报类型在它的方法吗?这是怎么代码汇编,似乎有一个圆形的参考。字符串 <->的对象 <->布尔。

我敢肯定我会看到的语句,在"这就是它是如何实现的",但我可以理解,如果这些回归类型是"系统。目"'s自己,然后一个子类的使用implemenations的string,bool和其他系统。Valuetype声明 新的 基类。

我希望这是有道理的。

在此先感谢,

多米尼克

有帮助吗?

解决方案

这没什么大不了的,一个基类总是可以参考的子类。例如,这个代码是完全合法的:

class A
{
    public B CreateB();
    {
        return new B();
    }
}

class B : A
{
}

注意到它 是一个问题,如果A和B中所定义的单独的组件,因为这将需要一个圆形的大会参考,这是不允许的

其他提示

一个圆形的参考只是一个问题横跨多个项目,否则父子关系不会永远存在的两侧。

实际上,它是 完全正确的,所有类型的继承的对象。请看看埃里克利珀特的 博客入口在这.

我没有看到该问题的一个基类回返的一个源类。

而且我没有看到圆形的依赖关系,因为对象。ToString();returns a String对象。String类源自对象,但是还等什么?如果两者都在同一个大会没有问题。

除了别人怎么说你也可以得出一个类从一个基类使用得出类作为一个通用的类型参数。也有很多整齐的使用这一模式。

public class A<T>
{
}

public class B : A<B>
{
}

如果你想看到一个圆形的依赖。净框架,然后再看看比 System.dll, System.Xml.dllSystem.Configuration.dll:

Microsoft如何创建这些集会是一个谜给我。实际上,我可能会后这样 另一个问题...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top