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

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

Я должен сделать ЕСЛИ statment как следующее (в C#):

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

спасибо

17
задан mouthpiec 15 March 2010 в 08:47
поделиться

4 ответа

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

if( obj.GetType() == typeof(int) )
{
    // int
}
33
ответ дан 30 November 2019 в 10:36
поделиться

Вот как вы это делаете:

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 , где по возможности следует использовать более конкретный класс, чем Object .

1
ответ дан 30 November 2019 в 10:36
поделиться

То, что вы делаете, нормально:

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

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

    foreach (object obj in list) {
        string str = obj as string;
        if (str != null) {
            Console.WriteLine(str);
        } else {
            Console.WriteLine("not a string");
        }
    }
15
ответ дан 30 November 2019 в 10:36
поделиться

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

3
ответ дан 30 November 2019 в 10:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: