我有以下代碼。我一直在嘗試調試標題中提到的錯誤,現在4個小時,但不幸的是,在這一點上我什麼都不瞭解。我來自Python,非常抱歉,如果這件事是基本的。此外,代碼並不是最好的 - 在我的調試嘗試中,它可能變得沒有組織和不必要的點。嘗試對列表進行foreach循環時獲取System.InvalidOperationException?
代碼上下文:該程序的創建是爲了模擬在視頻遊戲中創建Galaxy Gate(門戶網站,如果你喜歡的話),嘗試重新創建成本 - 看看你需要多少費用才能檢查使用實際的遊戲幣。
請注意,此錯誤始終發生在for-each循環的第二次執行時(當列表中沒有更多值被迭代時 - 我猜:我可能是錯的)。
截圖錯誤:http://prntscr.com/dep0xv
這是我收到錯誤的地方,在每個循環:
List<int> partsBuiltTwo = new List<int>();
partsBuiltTwo = ggPart(gateEnd, multiplier, partsBuilt);
if (!(partsBuiltTwo.Count == 0))
{
foreach (int part in partsBuiltTwo) //error
{
partsBuilt.Add(part);
label28.Text = (partsBuilt.Count).ToString();
}
}
這是函數ggPart被稱爲:
private List<int> ggPart(int gateEnd, int multiplier, List<int> partsBuilt)
{
int generatedPart = random.Next(1, gateEnd); //Generate part
if (multiplier > 1) //If we have a multiplier, use it on gate part
{
if (partsBuilt.Contains(generatedPart)) //If we hit a multiplier with a multiplier, give multiplier parts
{
for (int i = 0; i < multiplier; i++) //Give us as many parts as multipliers
{
if (partsBuilt.Count < gateEnd)
{
while (partsBuilt.Contains(generatedPart))
{
generatedPart = random.Next(1, gateEnd);
}
partsBuilt.Add(generatedPart);
updateReceivedValues(5, multiplier);
label26.Text = "x" + multiplier.ToString();
}
else
{
continue;
}
}
}
else //If we hit a multiplier on a normal part, give us multiplier + 1 parts
{
for (int i = 0; i < multiplier + 1; i++) //Give us as many parts as multipliers
{
if (partsBuilt.Count < gateEnd)
{
while (partsBuilt.Contains(generatedPart))
{
generatedPart = random.Next(1, gateEnd);
}
partsBuilt.Add(generatedPart);
updateReceivedValues(5, multiplier);
label26.Text = "x" + multiplier.ToString();
}
else
{
continue;
}
}
}
multiplier = 1;
label26.Text = "x" + multiplier.ToString();
}
else //If we don't have a multiplier and get a gate parts
{
if (partsBuilt.Contains(generatedPart)) //If we get a part we already have
{
multiplier += 1; //Increase multiplier by 1
}
else //If we get a part we don't already have
{
partsBuilt.Add(generatedPart); //Add part
updateReceivedValues(5, multiplier);
label26.Text = "x" + multiplier.ToString();
}
}
//int[] newArray = partsBuilt;
return partsBuilt;
//built += 1;
}
爲什麼我得到這個錯誤,我該如何解決?請儘可能描述,或者提供一種方法來調試,因爲我無法繼續我花了整整一天的程序,除非我修復這個錯誤。
此外,任何提示,讚賞。
「plz向德codez !! 1」 - 「號」 –
@MDXF哦,是的,我應該考慮修復那部分... –