* データ型を判断するために使用
* 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();
}
* 安全にキャスト変換する(演算子を用いてキャストした場合、例外は発生)
* キャストに失敗した場合、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("失敗...");
}