如何检查ArrayList中的对象类型

时间:2010-03-15 08:47:16

标签: c# object types arraylist

有没有办法在arraylist中获取对象的类型?

我需要制作一个IF语句如下(在C#中):

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

感谢

4 个答案:

答案 0 :(得分:33)

您可以使用普通的GetType()和typeof()

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

答案 1 :(得分:15)

你在做什么很好:

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

答案 2 :(得分:3)

使用GetType()了解Object的类型。

答案 3 :(得分:1)

这就是你如何做到的:

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更具体的类。