-1
abstract class ClassStupid
{
    public ClassStupid()
    {

    }
}

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

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

来自我的维基

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

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

4

1 回答 1

3

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

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

于 2012-04-30T00:30:36.723 回答