C#のクラスにはコンストラクターと呼ばれる特殊なメソッドが存在します。
コンストラクターはクラスのインスタンスが生成された時(キーワード(予約語) new が使われた時)に自動的に呼び出されます。
インスタンスの生成時に呼び出される為、フィールド(メンバー変数)などの初期化を行なう為に使われます。
特別は初期化が必要ない場合はコンストラクターを記述する必要はありません。
省略された場合、フィールド(メンバー変数)は既定値によって初期化されます。
コンストラクターがパラメータを持つクラスのインスタンスを作成する時は、キーワード(予約語) new を使う時にパラメータを指定する必要があります。
コンストラクターもオーバーロードが可能です。
複数定義されたコンストラクターのどれが呼び出されるかは、インスタンスを作成する時のパラメータの指定によって決まります。
キーワード(予約語) this を使う事で他のコンストラクターを呼び出して実行する事が可能です。
コンストラクターはクラスのインスタンスが生成された時(キーワード(予約語) new が使われた時)に自動的に呼び出されます。
インスタンスの生成時に呼び出される為、フィールド(メンバー変数)などの初期化を行なう為に使われます。
コンストラクターの定義
コンストラクターは通常のメソッドとは以下の点で異なります。- クラス名と同じ名前で定義する
- 戻り値は定義しない(戻り値はない)
- public class TestClass
- {
- private int TestField;
- public TestClass() //コンストラクター
- {
- TestField = 100;
- }
- }
コンストラクターの省略
コンストラクターは省略する事が可能です。特別は初期化が必要ない場合はコンストラクターを記述する必要はありません。
省略された場合、フィールド(メンバー変数)は既定値によって初期化されます。
- public class TestClass
- {
- }
パラメータを持ったコンストラクター
コンストラクターは通常のメソッドと同じようにパラメータを定義する事も可能です。コンストラクターがパラメータを持つクラスのインスタンスを作成する時は、キーワード(予約語) new を使う時にパラメータを指定する必要があります。
- public class TestClass
- {
- private int TestField;
- public TestClass(int num) //コンストラクター
- {
- TestField = num;
- }
- }
- public class Program
- {
- public static Main()
- {
- TestClass test;
- test = new TestClass(100); // インスタンス生成時にパラメータを渡す
- }
- }
パラメータの異なる複数のコンストラクター
C#ではパラメータの異なる同じ名前のメソッドを複数定義できるオーバーロードという仕組みがあります。コンストラクターもオーバーロードが可能です。
複数定義されたコンストラクターのどれが呼び出されるかは、インスタンスを作成する時のパラメータの指定によって決まります。
- public class TestClass
- {
- private int TestField;
- public TestClass() //コンストラクター(パラメータなし)
- {
- TestField = 10;
- }
- public TestClass(int num) //コンストラクター(パラメータ1つ)
- {
- TestField = num;
- }
- public TestClass(int num1, int num2) //コンストラクター(パラメータ2つ)
- {
- TestField = num1 + num2;
- }
- }
- public class Program
- {
- public static Main()
- {
- TestClass test1;
- TestClass test2;
- TestClass test3;
- test1 = new TestClass(); // コンストラクター(パラメータなし)が呼ばれる TestField=10
- test2 = new TestClass(20); // コンストラクター(パラメータ1つ)が呼ばれる TestField=20
- test3 = new TestClass(20, 10); // コンストラクター(パラメータ2つ)が呼ばれる TestField=30
- }
- }
コンストラクタからコンストラクターを呼ぶ
オーバーロードの仕組みによって複数のコンストラクターを定義できますが、同じような作業はなるべくソースコードを共通にしておきたいものです。キーワード(予約語) this を使う事で他のコンストラクターを呼び出して実行する事が可能です。
- public class TestClass
- {
- private int TestField1;
- private int TestField2;
- public TestClass()
- {
- TestField1 = 10;
- TestField2 = 20;
- }
- public TestClass(int num) : this() //this()により、まずパラメータなしのコンストラクターが呼び出される
- {
- TestField2 = num; //パラメータなしのコンストラクターが呼び出された後ココが実行される
- }
- public TestClass(int num1, int num2) : this(num1) //this(num1)により、まずパラメータ1つのコンストラクターが呼び出される
- {
- TestField1 = num1 + num2; //パラメータ1つのコンストラクターが呼び出された後ココが実行される
- }
- }
コメント
コメントを投稿