Dom*_*icz 1 .net clr inheritance paradox
在.NET中,所有类型都继承自System.Object.
我发现矛盾的是System.Object上的一些方法 - 即
System.String继承自System.Object:
[Serializable]
public class String : Object { /*...*/ }
System.Boolean继承自System.Object:
[Serializable]
public struct Boolean : Object { /*....*/ }
允许System.Object类允许子类在其方法上用作返回类型的内幕是什么?这个代码是如何编译的,因为似乎有一个循环引用.String < - > Object < - > Boolean.
我确信我会看到关于"它是如何实现的"的语句,但是我可以理解这些返回类型是否是"System.Object"本身,然后一个子类使用了string,bool和的实现.其他System.ValueTypes声明一个新的基类.
我希望这是有道理的.
提前致谢,
多米尼克
这没什么大不了的,基类总能引用子类.例如,此代码完全合法:
class A
{
    public B CreateB();
    {
        return new B();
    }
}
class B : A
{
}
请注意,如果A和B在单独的程序集中定义,那将是一个问题,因为这将需要循环程序集引用,这是不允许的
| 归档时间: | 
 | 
| 查看次数: | 182 次 | 
| 最近记录: |