【问题标题】:C# Byte array index was outside the bounds of the arrayC# 字节数组索引超出了数组的范围
【发布时间】:2014-08-17 14:14:22
【问题描述】:

亲爱的开发者,为什么我会出错? (索引超出了数组的范围)

【问题讨论】:

  • 因为您的 MagicList 是 300 个元素字节数组,而 100 * 3 = 300 大于 299 - 最大有效索引。
  • 仅供参考,您可以使用 .clear 重用字符串生成器
  • Eugene,我为 450 个元素创建数组,屏幕显示如何,哪里有问题?或 C# 有最大值。字节数组的有效索引?
  • @user3000633 你的autos直接说你的数组是byte[300]。您已将其创建为byte[450],但GetAsBinary 方法结果将原始数组改写为更小。

标签: c# arrays byte


【解决方案1】:

请注意,您将 MagicList 创建为一个 450 的数组,但在调试器中,它说它是一个 300 的数组。这是因为您明确创建的数组从未实际使用过。它立即被GetAsBinary 返回的数组替换。该数组只有 300 字节长,这就是您的代码失败的原因。您的循环退出条件必须考虑实际数组大小,而不是假设大小。以下代码显示了一种可以避免该问题的方法。

byte[] magicList = DBLite.dbMu.GetAsBinary("magicList");
DBLite.dbMu.Close();
for (int i = 0; i < magicList.Length/3; i++) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多