[英]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.