有没有办法访问列表中的对象?比如,在特定对象中获取确切的字段。对于实例:
List<Object> allObjectResult = new List<Object>();
allObjectResult.AddRange(method(ObjectOne.ToArray()));
allObjectResult.AddRange(method(ObjectTwo.ToArray()));
allObjectResult.AddRange(method(ObjectThree.ToArray()));
我想在ObjectOne,ObjectTwo和ObjectThree中获取特定字段。我怎么能这样做?
更新问题
在List中,我们可以按顺序访问元素位置。我第一次尝试在List中的对象中获取特定值。这就是我所做的:
创建列表的新实例:
List<Object> objList = new List<Object>();
在其上添加了数据:
objList.Add(objdata);
在方法中使用它:
Object[] result = binding.method(Object.ToArray());
循环:
for(i = 0; i < result.Length; i++)
{
Console.WriteLine("objs {0} - {1}", objList[i].Name, result[i].id);
}
然而,我想要的是我有三个对象。我所做的是将它们添加到列表中:
List<Object> allObjectResult = new List<Object>();
allObjectResult.AddRange(binding.method(ObjectOneList.ToArray()));
allObjectResult.AddRange(binding.method(ObjectTwoList.ToArray()));
allObjectResult.AddRange(binding.method(ObjectThreeList.ToArray()));
我想做同样的事情,就像我在对象中获取名称一样(无论如何,它是List中的对象)。我希望他们使用循环访问。
答案 0 :(得分:1)
选择特定类型的对象:
foreach (var obj1 in allObjectResult.OfType<ObjectOne>()) {
Console.WriteLine(obj1.Whatever);
}
动态检查类型:
foreach (var obj in allObjectResult) {
if (obj is ObjectOne) {
var obj1 = (ObjectOne)obj;
Console.WriteLine(obj1.Whatever);
} // else ...
}