如何检查 ArrayList 中的对象类型
Posted
技术标签:
【中文标题】如何检查 ArrayList 中的对象类型【英文标题】:How to check the type of object in ArrayList 【发布时间】:2011-01-27 14:27:01 【问题描述】:有没有办法获取arraylist中对象的类型?
我需要如下(在 C# 中)制作一个 IF 语句:
if(object is int)
//code
else
//code
谢谢
【问题讨论】:
【参考方案1】:使用GetType()
了解Object
的类型。
【讨论】:
【参考方案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() 和 typeof()
if( obj.GetType() == typeof(int) )
// int
【讨论】:
【参考方案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
更具体的类。
【讨论】:
最好只使用索引器从列表中提取值一次,然后将其转换为必要的类型。 @Andrew:是的,这是正确的。我写了这个例子来演示类型识别和转换,它在其他方面不是最优的。以上是关于如何检查 ArrayList 中的对象类型的主要内容,如果未能解决你的问题,请参考以下文章
如何从java中的抽象类arraylist打印特定的对象类型
如何找出每个对象在 ArrayList<Object> 中的类型?