未分類

C# 複数のコンストラクタを実行する

準備

(なし)

デザイン

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)

-未分類