如何使用索引访问C#中的对象

9

我在 C# 中有一个 foreach 循环,用于返回一些库存数据,其中属性 location_id 返回为 object[] 类型。循环如下所示:

foreach (XmlRpcStruct item in result)
{
   object obj =  item["location_id"];
}

在调试器中,我看到对象如下所示, enter image description here 因此,我猜测对象就像这样。
obj[0] = 12
obj[1] = "WH/Stock"

我尝试以obj[0]的形式访问obj,但是出现了以下错误:

无法对类型为“object”的表达式应用索引

那么,如何通过索引访问对象以检索值,例如12WH/Stock呢?


1
"但那样做不起作用": 你得到了什么错误? - Dirk Vollmar
当尝试使用 obj[0] 时,您是否遇到了编译器错误、执行错误或其他问题? - Bojan B
是的,我尝试过了,然后我得到了错误信息“无法对类型为'object'的表达式应用索引”。 - nuwaus
请查看此答案 - Mong Zhu
1
我不知道为什么这个问题被“关闭了”,因为我也在苦苦挣扎。真是爱死SO和他们的傲慢自大了。 - DevOpsSauce
2个回答

17

使用以下方法将obj转换为object[]:

var list = (object[])obj;

那么你可以使用list[0]


1
谢谢,这对我很有帮助。 - nuwaus
1
别忘了标记答案。 :) - Emad
非常好的答案,谢谢Emad先生! - Dung
它也被称为对象类型的装箱和拆箱。https://www.c-sharpcorner.com/blogs/what-is-object-type-boxing-and-unboxing-in-c-sharp - Dung

1

指定对象数组类型:

object[] obj =  item["location_id"];

或者更简单的方式是让编译器推断类型:

var obj =  item["location_id"];

如果你已经尝试过,那么你会得到“无法隐式将类型 'object' 转换为 'object[]'。存在显式转换(是否缺少强制转换?)”的编译错误。 - nuwaus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接