抽象类与类

本文关键字:抽象类 | 更新日期: 2023-09-27 18:32:34

abstract class ClassStupid
{
    public ClassStupid()
    {
    }
}
ClassStupid stupid = new ClassStupid(); //This is not possible. We can not create an Instance of Abstract Class.

我的问题是 C# 编译器中阻止程序创建抽象类实例的MAGIC是什么,尽管有构造函数。

来自我的维基

在面向对象编程中,类中的构造函数(有时缩写为 ctor)是在创建对象时调用的一种特殊类型的子例程。它准备新对象以供使用,通常接受构造函数用于设置首次创建对象时所需的任何成员变量的参数。之所以称为构造函数,是因为它构造类的数据成员的值。

抽象类构造函数与普通类构造函数有何不同?

抽象类与类

抽象类和非抽象类的构造函数没有区别;但是,类是不同的,编译器知道这一点。这就是禁止以您在帖子中显示的方式构造抽象类的原因:编译器只是检查IsAbstract标志,并不允许在编译时构造。

此外,CLR 还有一个运行时标志,指示类是抽象的。这就是为什么您无法在运行时通过反射实例化抽象类的原因。