我创建了一个管理串口的类,它允许我将ROM代码发送到在机器人上运行的虚拟机。
这是宣言:
public byte[] mensaje_a_enviar = new byte[4097];
有时我只发送20个字节或更少,但有时我只需要一次发送4097个字节......
奇怪的问题是这个字节数组在运行时调整为较小的值(如10个字节)。 当我尝试再次填充100个字节时,这显然会引发溢出异常...
我的程序中只有一个这个类的实例。
为什么会这样?
答案 0 :(得分:2)
您的代码中的其他地方
mensaje_a_enviar = //Somthing
或
SomeFunction(ref mensaje_a_enviar)
然后在SomeFunction
里面你就像第一行一样。
这两个例子正在做的是用从等号右边的任何东西返回的新数组替换数组。您应该只将数组作为参数传递给函数而不使用引用(SomeFunction(mensaje_a_enviar)
)或通过索引器(mensaje_a_enviar[i]
)访问元素。
检查您的代码并查看您使用上述两段代码之一的位置。