【问题标题】:Working with data returned as a Complex Array处理作为复杂数组返回的数据
【发布时间】:2015-08-16 07:46:59
【问题描述】:

如果我的术语不正确,请多多包涵。

我正在尝试从对象中提取数据。该对象有一个复杂的数组,由行和每行 6 列组成。

我需要访问数组中的最后一行,所以我使用的是 .Count。问题是无法访问行内的列。代码如下:

           var weight = USBHIDDRIVER.USBInterface.usbBuffer;
           var cnt = weight.Count;
           Debug.WriteLine(weight[cnt][4]);

USBHIDDRIVER.USBInterface.usbBuffer; contains data in the following format:

ROW [0] - COL [0] = 3
          COL [1] = 4
          COL [2] = 3
          COL [3] = 255
          COL [4] = 6
          COL [5] = 0
Row [1] - COL [0] = 3
          COL [1] = 4
          COL [2] = 3
          COL [3] = 255
          COL [4] = 6
          COL [5] = 0

等等等等。 提前致谢。

【问题讨论】:

  • 有什么异常?你也确定 count 大于 0 吗?
  • 使用cnt - 1var cnt = weight.Count - 1;
  • @Neo 我收到的错误是“无法使用 [] 将索引应用于对象类型的表达式”
  • @EBrown 计数很好,我收到了代表行的正确值。
  • 您是否验证 weight 是一个二维数组?

标签: c# object multidimensional-array arraylist


【解决方案1】:

因为在此处访问从零开始的列表,所以您应该使用Count - 1 索引数组的最后一个字段。

USBHIDDRIVER.USBInterface.usbBuffer 是一个ArrayList,所以它的元素是object 类型。要访问添加到此列表中的 byte[] 类型的元素,您必须将元素类型转换为 byte[]

Debug.WriteLine(((byte[])weight[cnt-1])[4]);

【讨论】:

  • 感谢 Peter 的回复,问题是我在 VS“无法将 [] 索引应用于类型对象的表达式”中收到以下错误,因此我无法编译。如果我删除 [4],那么我可以运行我的脚本,但我无法访问列中 [4] 的值。
  • 刚刚查看了 USBHIDDRIVER 并更新了我的答案。
  • 成功了,因为不知道对象的类型而导致小组走错了路。感谢您的研究。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多