【问题标题】:How to access Object by index C# [closed]如何通过索引 C# 访问对象 [关闭]
【发布时间】: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 和他们的狂妄自大。

标签: c# arrays object indexing foreach


【解决方案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?)编译错误。
猜你喜欢
  • 2017-02-24
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多