小编sub*_*per的帖子

嵌套类 - 这不是一个不完整的类型

示例代码:

public class SimpleClass
{
    private NestedClass nestedClass = new NestedClass();

    public class NestedClass : SimpleClass          
    {

    }
}

// when instantiating in say.. main()
SimpleClass simpleClass = new SimpleClass();
Run Code Online (Sandbox Code Playgroud)

我来自C++背景,所以我很难绕过这里发生的事情.具体来说我们如何实例化NestedClass内部SimpleClass.理想情况下编译器需要完全布局SimpleClass才能实例化NestedClass,而这又需要SimpleClass.它本质上是递归的.

这就是我们运行此代码时会发生的情况.我们得到StackOverflow:)例外!

在C++世界中,编译器会incomplete type在这种情况下哭泣.

所以我的问题的关键是:

  1. 这里发生了什么,编译器如何布局这个类(我知道它的实现细节,但没有完整的类型我们如何实例化一个对象?)

  2. 此运行时异常是故意的,还是应该是编译时错误?

.net c# internals

1
推荐指数
1
解决办法
73
查看次数

标签 统计

.net ×1

c# ×1

internals ×1