web-dev-qa-db-ja.com

ArrayListでオブジェクトのタイプを確認する方法

Arraylist内のオブジェクトのタイプを取得する方法はありますか?

次のようにIFステートメントを作成する必要があります(C#で):

if(object is int)
 //code
else
 //code

ありがとう

17
mouthpiec

通常のGetType()とtypeof()を使用できます

if( obj.GetType() == typeof(int) )
{
    // int
}
33
balexandre

あなたがしていることは大丈夫です:

static void Main(string[] args) {
    ArrayList list = new ArrayList();
    list.Add(1);
    list.Add("one");
    foreach (object obj in list) {
        if (obj is int) {
            Console.WriteLine((int)obj);
        } else {
            Console.WriteLine("not an int");
        }
    }
}

値型の代わりに参照型をチェックする場合は、as演算子を使用できるため、最初に型をチェックしてからキャストする必要はありません。

    foreach (object obj in list) {
        string str = obj as string;
        if (str != null) {
            Console.WriteLine(str);
        } else {
            Console.WriteLine("not a string");
        }
    }
15
Paolo Tedesco

GetType()を使用して、Objectのタイプを確認します。

3
Gopi

それはあなたがそれをする方法とほとんど同じです:

if (theArrayList[index] is int) {
   // unbox the integer
   int x = (int)theArrayList[index];
} else {
   // something else
}

オブジェクトのTypeオブジェクトを取得できますが、最初にそれがnull参照ではないことを確認する必要があります。

if (theArrayList[index] == null) {
  // null reference
} else {
  switch (theArrayList[index].GetType().Name) {
    case "Int32":
      int x = (int)theArrayList[index];
      break;
    case "Byte":
      byte y = (byte)theArrayList[index];
      break;
  }
}

フレームワーク1.xに固執しない限り、ArrayListクラスをまったく使用しないでください。代わりにList<T>クラスを使用してください。可能であれば、Objectよりも具体的なクラスを使用する必要があります。

1
Guffa