C# 为什么分配字节数组会引发溢出异常?

C# 为什么分配字节数组会引发溢出异常?,c#,C#,我在C#控制台应用程序上收到一个错误。我正在尝试编写一些代码,但每当我这样做时,它就会抛出一个异常,不是所有的时间,只是一些时间,顺便说一句,不只是我在使用这个程序,还有30多个成员在使用它 代码: 例外情况是: 数据包处理中记录的异常2015年1月23日上午10:54:54: System.OverflowException:算术运算导致 溢出 异常发生在第37行,下一行 byte[] Content = new byte[MessageLength - 2]; 这是“pos”和“Messg

我在C#控制台应用程序上收到一个错误。我正在尝试编写一些代码,但每当我这样做时,它就会抛出一个异常,不是所有的时间,只是一些时间,顺便说一句,不只是我在使用这个程序,还有30多个成员在使用它

代码:

例外情况是:

数据包处理中记录的异常2015年1月23日上午10:54:54: System.OverflowException:算术运算导致 溢出

异常发生在第37行,下一行

byte[] Content = new byte[MessageLength - 2];
这是“pos”和“MessgaeLength”长度变化的图像

确保
MessageLength>2

例如:

if (MessageLength < 3)
    throw new Exception("Incorrect MessageLength");
if(MessageLength<3)
抛出新异常(“错误的消息长度”);

否则,您将尝试实例化长度为0/-X的数组。

请确保
MessageLength>2

例如:

if (MessageLength < 3)
    throw new Exception("Incorrect MessageLength");
if(MessageLength<3)
抛出新异常(“错误的消息长度”);

否则,您将尝试实例化长度为0/-X的数组。

请确保
MessageLength>2

例如:

if (MessageLength < 3)
    throw new Exception("Incorrect MessageLength");
if(MessageLength<3)
抛出新异常(“错误的消息长度”);

否则,您将尝试实例化长度为0/-X的数组。

请确保
MessageLength>2

例如:

if (MessageLength < 3)
    throw new Exception("Incorrect MessageLength");
if(MessageLength<3)
抛出新异常(“错误的消息长度”);

否则,您将尝试实例化长度为0/-X的数组。

问题很可能出在
MessageLength
的长度上。如果长度小于2,则会出现溢出

请尝试以下失败代码:

int x = 0;
byte[] Content = new byte[x - 2];
在分配之前,您应该检查
x-2
是否大于或等于0:

if (MessageLength >= 2)
{
    byte[] Content = new byte[MessageLength - 2];

    ...
}

问题很可能出在
MessageLength
的长度上。如果长度小于2,则会出现溢出

请尝试以下失败代码:

int x = 0;
byte[] Content = new byte[x - 2];
在分配之前,您应该检查
x-2
是否大于或等于0:

if (MessageLength >= 2)
{
    byte[] Content = new byte[MessageLength - 2];

    ...
}

问题很可能出在
MessageLength
的长度上。如果长度小于2,则会出现溢出

请尝试以下失败代码:

int x = 0;
byte[] Content = new byte[x - 2];
在分配之前,您应该检查
x-2
是否大于或等于0:

if (MessageLength >= 2)
{
    byte[] Content = new byte[MessageLength - 2];

    ...
}

问题很可能出在
MessageLength
的长度上。如果长度小于2,则会出现溢出

请尝试以下失败代码:

int x = 0;
byte[] Content = new byte[x - 2];
在分配之前,您应该检查
x-2
是否大于或等于0:

if (MessageLength >= 2)
{
    byte[] Content = new byte[MessageLength - 2];

    ...
}


MessageLength
的值是多少?来自
pos
的值是多少?我将运行一些代码进行检查,我将在2分钟内用长度回答。我已经更新了我的问题。
MessageLength
的值是多少?来自
pos
的值是多少?我将运行一些代码进行检查,我会在2分钟内回复长度。我已经更新了我的问题。
MessageLength
的值是多少?以及
pos
的值是多少?我会运行一些代码进行检查,我将在2分钟内回复长度。我已更新了我的问题。
MessageLength
的值是多少?以及
pos
的值是多少?我将运行一些代码进行检查,我将在2分钟内回复长度。我已更新了我的问题。0是一个ok值,在这种情况下可能不符合逻辑,但是您当然可以在.NET中构造长度为0的数组。我选择了此方法,目前为止它已停止异常,谢谢。0是一个ok值,在此上下文中可能不符合逻辑,但您当然可以在.NET中构造长度为0的数组。我选择此方法,目前为止它已停止异常,谢谢。0是一个ok值,在此上下文中可能不符合逻辑,但您当然可以在.NET中构造一个长度为0的数组。我选择此方法,到目前为止它已停止异常,谢谢。0是一个ok值,在此上下文中可能不符合逻辑,但是您当然可以在.NET中构造长度为0的数组。我选择了这种方法,到目前为止它已经停止了异常,谢谢。