c# – 同一程序集中的自引用类或循环引用类如何成功编译
发布时间:2020-12-15 21:00:21 所属栏目:百科 来源:网络整理
导读:我想知道C#和.Net编译器如何能够在同一个程序集中成功编译自引用类或循环引用类. 请考虑以下代码存在于同一程序集中. class X{ X x; }class Y{ Z z; }class Z{ Y y; } 当然,这段代码编译成功. 但是怎么样?我想知道编译器是如何在这些情况下第一次解析类的.
我想知道C#和.Net编译器如何能够在同一个程序集中成功编译自引用类或循环引用类.
请考虑以下代码存在于同一程序集中. class X{ X x; } class Y{ Z z; } class Z{ Y y; } 当然,这段代码编译成功. 解决方法
正如
this文章中提到的,C#编译器执行“Two Pass”即
>在第一遍中,它计算元数据:“顶级”内容,如命名空间,类,结构,枚举,接口,委托,方法,类型参数,形式参数,构造函数,事件,属性等. C#编译方法不同于C/C++,其中类,宏等在头文件中声明,这有助于它通过读取头文件一次性获取有关类,方法等的所有信息.与C#相比,它没有头文件,而是使用Two Pass技术来编译所有代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容