-1
abstract class ClassStupid
{
    public ClassStupid()
    {

    }
}

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

私の質問はMAGIC、コンストラクターがあるにもかかわらず、プログラムが抽象クラスのインスタンスを作成できないようにする C# コンパイラーの内容です。

私のウィキから

オブジェクト指向プログラミングでは、クラスのコンストラクター (ctor と短縮されることもあります) は、オブジェクトの作成時に呼び出される特殊なタイプのサブルーチンです。これは、オブジェクトが最初に作成されたときに必要なメンバー変数を設定するためにコンストラクターが使用するパラメーターを受け入れて、使用する新しいオブジェクトを準備します。クラスのデータメンバーの値を構築するため、コンストラクターと呼ばれます。

抽象クラスのコンストラクターは通常のクラスのコンストラクターとどう違うのですか?

4

1 に答える 1

3

抽象クラスと非抽象クラスのコンストラクターは同じです。ただし、クラスは異なり、コンパイラはそれを認識しています。これが、投稿で示した方法での抽象クラスの構築が禁止されている理由です。コンパイラは単にIsAbstractフラグをチェックし、コンパイル時に構築を許可しません。

さらに、CLR には、クラスが抽象であることを示すランタイム フラグもあります。そのため、実行時にリフレクションを介して抽象クラスをインスタンス化することはできません。

于 2012-04-30T00:30:36.723 に答える