我有一個包含5個插槽的清單。在將商品添加到我的廣告資源時,我會檢查最佳廣告位。如果所有插槽都已滿,我想在控制檯中顯示一行並退出該方法,但我無法確定該部分。我知道最佳插槽的價值只會從0到4,但我的if(bestSlot >= 4
)工作不正常。當變量達到某個值時返回
int bestSlot = -1;
for (int i = 0; i < PlayerInventory.Items.Count(); i++)
{
if (PlayerInventory.Items[i].ItemName == "empty")
{
if (bestSlot < 0)
{
bestSlot = i;
}
}
else if (PlayerInventory.Items[i].ItemName != "empty")
{
if (PlayerInventory.Items[i].ItemName == item.ItemName)
{
bestSlot = i;
}
}
}
// add now
if (bestSlot >= 4)
{
Console.WriteLine("inventory full");
return;
}
if (bestSlot >= 0)
{ //add the item }
眼下,該項目沒有被添加到清單中,但在(bestSlot>= 0)
代碼仍然跑去,我在我的清單中的空槽時,控制檯顯示該行。
你能否提供更多關於你的應用狀態的細節。 PlayerInventory.Items包含哪些項目。項目的價值是什麼 - 尤其是item.ItemName。沒有那麼難以猜測你的代碼將運行的樣子。 – Tuan 2014-10-12 02:15:52
另外最後一部分不清楚:1.沒有添加項目,因爲它沒有代碼?因爲你說2. bestSlot> = 0被執行正確嗎? – Tuan 2014-10-12 02:20:21
您應該將slot的空值綁定到PlayerInventory.Items [i] == null,而不是.ItemName ==「empty」。你可以偶然地有一個名字是「空」的項目。 – Tuan 2014-10-12 02:21:53