未分類

C# クラスが特定のクラスの派生クラスであるかを判別する

準備

(なし)

デザイン

1. フォーム (Form1) にボタン (button1) を配置します。
2. フォーム (Form1) にリストボックス (listBox1) を配置します。

サンプルコード (C#)

// 名前空間の追加
// (なし)

// クラスの宣言
public class TestClass1
{
}

public class TestClass2 : TestClass1
{
}

// コード
private void button1_Click(object sender, EventArgs e)
{
  TestClass1 tc1 = new TestClass1();
  listBox1.Items.Add(tc1 is TestClass1);
  listBox1.Items.Add(tc1 is TestClass2);
  
  TestClass2 tc2 = new TestClass2();
  listBox1.Items.Add(tc2 is TestClass1);
  listBox1.Items.Add(tc2 is TestClass2);
}

解説

インスタンス化されたオブジェクトのクラスを判別しています。判別には is 演算子を使いますが、インスタンス化に使われたクラスのスーパークラスも判別できます。

このサンプルでは、オブジェクト tc1, tc2 のクラスを判別しています。tc1 は TestClass1 から作成されていますので、TestClass2 で判別すると false となります。

tc2 は TestClass2 から作成されていますので、作成元のクラス TestClass2 とそのスーパークラス TestClass1 でも判別されます。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)

-未分類