编译器是否在 C# 中编译抽象类?
如果是,那么编译器如何处理抽象类,就像普通类一样,或者有一些区别。
如果没有,那么它如何允许在派生类中继承数据成员和抽象类的成员函数。
编译器是否在 C# 中编译抽象类?
如果是,那么编译器如何处理抽象类,就像普通类一样,或者有一些区别。
如果没有,那么它如何允许在派生类中继承数据成员和抽象类的成员函数。
抽象类的行为确实像 IL 中的普通类,唯一的区别是添加的abstract
标志/关键字。
IL 中的通用公共类看起来像这样(没有正文)
.class public auto ansi beforefieldinit
NAMESPACE.CLASS_NAME
extends [mscorlib]System.Object
一个抽象类看起来像这样
.class public abstract auto ansi beforefieldinit
NAMESPACE.CLASS_NAME
extends [mscorlib]System.Object
我可以建议您创建测试程序集并使用 JetBrains 的 dotPeek(它是一个免费工具)浏览它们。您可以同时查看代码和 IL 代码。