如何通过索引 C# 访问对象 [关闭]

Posted

技术标签:

【中文标题】如何通过索引 C# 访问对象 [关闭]【英文标题】:How to access Object by index C# [closed] 【发布时间】:2017-04-15 17:45:27 【问题描述】:

我在 C# 中有一个 foreach 循环,它返回一些库存数据,属性 location_id 返回为 object[]。循环如下,

foreach (XmlRpcStruct item in result)

   object obj =  item["location_id"];

在调试器中,我看到的对象如下,

所以我猜对象是这样的

obj[0] = 12
obj[1] = "WH/Stock"

我尝试像obj[0] 一样访问obj 然后我得到了

无法将带有 [] 的索引应用于“对象”类型的表达式

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

【问题讨论】:

“但这不起作用”:你得到什么错误? 在尝试使用 obj[0] 时,您是否遇到编译器错误或执行错误或其他什么? 是的,我试过了,然后我得到了错误cannot apply indexing with[] to an expression of type 'object' 看看这个answer 我不知道为什么这是“关闭为题外话”,因为我正在为完全相同的事情而苦苦挣扎。一定要喜欢 SO 和他们的狂妄自大。 【参考方案1】:

obj 转换为 object[] 使用:

var list = (object[])obj;

那么你可以使用list[0]

【讨论】:

谢谢,这对我很有效。 别忘了标记答案。 :) 很好的答案,谢谢@Emad先生! 也称为装箱和拆箱c-sharpcorner.com/blogs/…【参考方案2】:

指定对象数组类型:

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

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

var obj =  item["location_id"];

【讨论】:

已经试过了,然后你会得到Cannot implicitly convert type 'object' to 'object[]'. An explicit conversion exists (are you missing a cast?)编译错误。

以上是关于如何通过索引 C# 访问对象 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

c# topmost模式窗口关闭后,有“无法访问已释放的对象”错误

C# WPF如何关闭通过父窗口打开的所有子窗口

C#无法访问已释放的对象

如何在c#中将对象转换为数组? [关闭]

Windows核心编程(第5版)----关闭内核对象

如何在 C# 中更新对象内的属性 [关闭]