準備
(なし)
デザイン
1. フォーム (Form1) にボタン (button1) を配置します。
2. フォーム (Form1) にリストボックス (listBox1) を配置します。
サンプルコード (C#)
// 名前空間の追加 // (なし) // クラスの宣言 public class TestClass { public TestClass(ListBox lstTarget) { lstTarget.Items.Add("コンストラクタ - 引数なし"); } public TestClass(ListBox lstTarget, int i) { lstTarget.Items.Add("コンストラクタ - 引数あり"); } } // コード private void button1_Click(object sender, EventArgs e) { TestClass tc1 = new TestClass(listBox1); TestClass tc2 = new TestClass(listBox1, 1); }
解説
TestClass をインスタンス化します。その際、引数ありのコンストラクタをコールしていますが、この引数ありのコンストラクタが実行される直前に、引数なしのコンストラクタが実行されます。この挙動を実現しているのが、 : this () また MyClass.New() です。
(C# の場合)
引数の異なるコンストラクタが他に定義されていれば、その書式と同じ : this を記述すれば、そのコンストラクタを実行することができます。例えば、TestClass (int i, string s) と定義されていれば、: this(0,"") で実行することができます。
(VB.NET の場合)
引数の異なるコンストラクタが他に定義されていれば、その書式と同じ MyClass.New() を記述すれば、そのコンストラクタを実行することができます。例えば、New(ByVal i As Integer, ByVal s As String) と定義されていれば、MyClass.New(0, "") で実行することができます。
結果
動作確認環境
Visual Studio 2015 Professional (C# 6.0)