在我用C#开发的应用程序中,我有以下代码:
byte[] resb = new byte[Buffer.ByteLength(blockAr) + Buffer.ByteLength(previous)];
Array.Copy(blockAr, 0, resb, 0, blockAr.Length);
Array.Copy(previous, 0, resb, blockAr.Length, previous.Length);
连接两个字节数组是一个非常简单的代码。
问题是在某些特殊情况下,我不知道我有这个例外:
ArgumentOutOfRangeException: sourceIndex小于下限 第一维的界限 sourceArray。
我在代码中看不到任何奇怪的东西,我无法重现异常。
有人可以帮我确定问题吗?
感谢
答案 0 :(得分:1)
blockAr或previous可以是一个空数组吗?这可以解释异常,因为即使索引0也会超出范围。
答案 1 :(得分:0)
IDK但是有理由在第一行使用ByteLength然后在下一行使用Length吗?也许那里有一些细微差别导致不一致。尝试在两个地方使用ByteLength,然后尝试在两个地方使用长度,看看其中一个是否能解决你的问题。
答案 2 :(得分:0)
这不是我向你展示的代码。有缺陷的代码是:Convert.ToBase64String(byte[] array)
。
似乎ToBase64String
内部使用Array.Copy
,在特定情况下会引发我之前指出的异常。库函数不会引发自己的异常,这很奇怪。
要解决此问题,我已将其附在try
- catch
声明中,现在一切正常!
感谢大家的建议。