C# Абстрактный класс

Компилятор компилирует абстрактный класс в C#?

Если да, то как компилятор обрабатывает абстрактный класс, как обычный класс, или есть какая-то разница.

И если нет, то как разрешить наследование членов-данных и функции-члена абстрактного класса в производном классе.

1 ответ

Абстрактный класс действительно ведет себя как нормальный класс в 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

Я могу порекомендовать вам создавать тестовые сборки и просматривать их с помощью dotPeek от JetBrains (это бесплатный инструмент). Вы можете просматривать код и код IL одновременно.

Другие вопросы по тегам