有没有办法在arraylist中获取对象的类型?
我需要制作一个IF语句如下(在C#中):
if(object is int)
//code
else
//code
感谢
答案 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
更具体的类。