[英]C# System.OverflowException Error in loops
我试图简化某人的编码,让代码更具可读性。 但是,当我运行以下代码时,遇到了“System.OverFlowException”错误。 我在 Visual Studio IDE 中运行代码。 函数“Transmit_Data”仅用于存储数据数组。 “TotalIndexToMod”是数组的长度,“CurrentLoopIndexCnt”是“TotalIndexToMod”的当前循环索引号。 以下是代码(在 C# 中):
int TotalIndexToMod = 28;
int MaxLoopIndexCnt = 16;
for (int mod = 0; mod < TotalIndexToMod; mod++)
{
int LeftToMod = MaxLoopIndexCnt - CurrentLoopIndexCnt;
Transmit_Data(mod, LeftToMod);
CurrentLoopIndexCnt++;
Console.WriteLine("CurrentIndexToMod / Mod/ Index : " + Convert.ToInt16(mod));
CurrentIndexToMod = mod;
Console.WriteLine("CurrentLoopIndexCnt : " + Convert.ToInt16(CurrentLoopIndexCnt));
Console.WriteLine("MaxLoop : " + Convert.ToInt16(MaxLoop));
Console.WriteLine("MaxLoopIndexCnt : " + Convert.ToInt16(MaxLoopIndexCnt));
if (CurrentLoopIndexCnt > MaxLoopIndexCnt)
{
CurrentLoopCnt++;
if (CurrentLoopCnt > MaxLoop) // last loop end
{
// byte Mod_State = (byte)(RxMsg.DATA[0] & 0x03);
if (CurrentIndexToMod == 128)
{
//do something
}
else
{
//do something
}
}
else
{
if (CurrentLoopCnt < MaxLoop)
{
MaxLoopIndexCnt = 16;
}
else if (CurrentLoopCnt == MaxLoop) // last loop
{
MaxLoopIndexCnt = SpareMaxLoopIndexCnt;
}
CurrentLoopIndexCnt = 1;
}
}
}
最有可能的错误发生在方法Convert.ToInt16 中。 所以请确保值不超出Int16类型的范围。
还请考虑带有格式字符串参数的重载方法WriteLine 。 这样,下面这行代码:
Console.WriteLine("CurrentIndexToMod / Mod/ Index : " + Convert.ToInt16(mod));
看起来像这样:
Console.WriteLine("CurrentIndexToMod / Mod/ Index : {0}", mod);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.