首页 > 解决方案 > C# 抽象类

问题描述

编译器是否在 C# 中编译抽象类?

如果是,那么编译器如何处理抽象类,就像普通类一样,或者有一些区别。

如果没有,那么它如何允许在派生类中继承数据成员和抽象类的成员函数。

标签: c#oopabstract-classcompiler-specific

解决方案


抽象类的行为确实像 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 代码。


推荐阅读