2008年09月03日

配列かどうかを調べる

   このエントリーをはてなブックマークに追加 Clip to Evernote
bool IsArray(Type type) { }

このメソッドの中で、typeが、配列オブジェクトだということを判断するには、C#でどういうコードを書けば良いのだろうか?


初めに書いたコード

  return type.BaseType.FullName == "System.Array";

次に書いたコード

  return type.BaseType == typeof(System.Array);

要素の型は、

  Type elementType = type.GetElementType();

で求められる。

もちろん、is 演算子が使える場面では、こんな面倒なことをする必要はない。
以下のように書けばよいだけだ。

int[] num = new[] { 1, 2, 3, 4, 5 };
if (num is Array)
Console.WriteLine(true);


9/5追記

配列かどうかは、

type.IsArray

だけでよかった。
(よこけんさんに教えてもらった)


この記事へのコメント
Type.IsArray プロパティってのがありますですよ
Posted by よこけん at 2008年09月03日 23:07
typeof(Array).IsAssignableFrom(type)

とか?
Arrayクラスの解説ってわかりにくいですね。
Posted by satoshi at 2008年09月03日 23:46
よこけんさん

> Type.IsArray プロパティってのがありますですよ

こんなプロパティがあったんですね。
調べる方向が違ってましたね。むだな努力をしてました...


Posted by gushwell at 2008年09月04日 12:21
satoshiさん

> typeof(Array).IsAssignableFrom(type)

へー、いろんなやり方があるんですね。
Posted by gushwell at 2008年09月04日 12:24
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51616359