わかりました、いくつかのコンストラクタはどうですか?
// a sample base class
class KBase {
public readonly int value; // making it readonly means it can only be assigned to once, and that has to happen during a constructor.
public KBase ( int startValue ) { value = startValue; }
}
class KHandler : KBase
{
public readonly string name = "wut";
// this is a parameterless constructor, whose implementation invokes another constructor ( the one below ) of this class
public KHandler () : this ( "huh" ) {
}
// this is a 1 parameter constructor, whose implementation ensures KBase is properly initialized, and then proceeds to initialize its part of the new instance.
public KHandler ( string val ) : base ( 3 ) {
name = val;
}
}
class Test {
static void Main()
{
// this next line calls the parameterless constructor I defined above
KHandler handler = new KHandler();
// and this next line calls the 1 parameter constructor
KHandler handler2 = new KHandler("something else");
Console.WriteLine("All Good 1"+handler.name);
Console.WriteLine("All Good 2"+handler2.name);
}
}
新しいクラスインスタンスが割り当てられて「ゼロ化」された後、少し特別な環境で実行されるコンストラクターの基本的なメカニズムが必要だと思います。特別な環境は、コンパイラ/言語がすべての基本クラスとフィールドが適切に初期化されることを保証し、構築中に読み取り専用メンバー (のみ) に割り当てることができることです。
コンストラクターは、基本クラスのコンストラクターを呼び出して、これらの基本を適切に初期化できます。コンストラクターは、続行する前に同じクラスの別のコンストラクターを呼び出すこともできます。
上記の例のように、クラスごとに複数のコンストラクターを使用できます。コンストラクターを指定しない場合、コンパイラーは空のパラメーターなしのコンストラクターを効果的に挿入します。この動作が望ましくない場合は、(任意のパラメーター リストの) 独自のコンストラクターを追加すると、コンパイラー/言語による空のパラメーターなしのコンストラクターの自動作成がキャンセルされます。(独自のパラメーター化されたコンストラクターを追加し、パラメーターなしのコンストラクターも必要な場合は、自分で追加し直す必要があります。)
最初のコンストラクター (パラメーターなしのコンストラクター) は最初の new KHandler() の結果として呼び出され、2 番目のコンストラクターは 2 番目の new KHandler (文字列) によって呼び出されます。
構築されると、オブジェクトはすぐに使用できると見なされます。とにかく、コンストラクターの一般的な構造を検索すると、より多くの情報が得られます。