【C#】IS演算子 / AS演算子 / GetType().Name / Typeof ~キャスト関連の処理~

[1] IS演算子

 * データ型を判断するために使用
 * Javaの「instanceof演算子」に相当(関連記事を参照のこと)
 * 構文は「オブジェクト is 型」でbool型を返す
 * ほかにもtypeof、GetType()などがあるが、GetType()はオブジェクトがnullの場合使えないので、IS演算子の方を使ったほうがいい

構文

オブジェクト名 is データ型

用途

 * キャストする時に、例外が発生する時などに使用
 * 例:データ内に、基本string型が入っているが、System.DBNullが入っている可能性がある場合(この場合、普通にキャストすると例外が発生する)

サンプル

string str = string.Empty;

if (str is string)
{
  // stringだった場合の処理
}

サンプル

SampleClass1 obj = new SampleClass1();

if (obj is SampleClass1Ex)
{
    ((SampleClass1Ex)obj).Execute();
}

[2] AS演算子

 * 安全にキャスト変換する(演算子を用いてキャストした場合、例外は発生)
 * キャストに失敗した場合、nullを返す

サンプル

SampleClass1 obj = new SampleClass1();

SampleClass1Ex objEx = obj as SampleClass1Ex;
if (objEx != null)
{
    objEx .Execute();
}

[3] GetType().Name

構文

オブジェクト名.GetType().Name == "データ型"

サンプル

string str = string.Empty;

if (str.GetType().Name == "string")
{
  // stringだった場合の処理
}

[4] Typeof

 * Type型のインスタンスを取得
 * GetType() : 引数のクラスのType型のインスタンスを取得

サンプル

* こんな使い方↓もできる(画面によって、処理を変更するなどできる)
Dictionary<Type, string> obj
    = new Dictionary<Type, string>
    {
        {typeof(Form1), "Form1です"},
        {typeof(Form2), "Form2です"},
    };

Form2 form = new Form2();
string title = obj[form.GetType()];
MessageBox.Show(title);

番外:TryParseメソッド

 * 値を変換する際に、try-catchを使用せずに、変換に失敗しても例外を発生しないメソッド
 * 変換が成功した場合には戻り値としてtrueを返し、失敗した場合にはfalseを返す

サンプル

 double outValue;
 if(double.TryParse(value, out outValue))
 {
     Console.WriteLine("成功 : " + outValue);
 }
 else
 {
     Console.WriteLine("失敗...");
 }

関連記事

ジェネリック ~<T>型 / クラスやメソッドを汎用的に使えるようにする~

http://blogs.yahoo.co.jp/dk521123/22167448.html

Java】 instanceof 演算子 / getClass()

http://blogs.yahoo.co.jp/dk521123/33631184.html