Подтвердить что ты не робот

Как проверить тип объекта в ArrayList

Есть ли способ получить тип объекта в arraylist?

Мне нужно сделать утверждение IF как следующее (в С#):

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

спасибо

4b9b3361

Ответ 1

вы можете использовать обычные GetType() и typeof()

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

Ответ 2

То, что вы делаете, прекрасно:

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");
        }
    }

Ответ 3

Используйте GetType(), чтобы узнать тип Object.

Ответ 4

Это в значительной степени, как вы это делаете:

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

Вы можете получить объект Type для объекта, но тогда вы должны убедиться, что он не является нулевой ссылкой:

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, если это возможно.