C# 当变量达到某个值时返回

C# 当变量达到某个值时返回,c#,C#,我有一个包含五个插槽的清单。在我的库存中添加一个项目时,我会检查最佳插槽。如果所有插槽都已满,我希望在控制台中显示一行并退出该方法,但我很难找出该部分。我知道best slot的值只能从0变为4,但是如果(best slot>=4)不正常,我的 int bestSlot = -1; for (int i = 0; i < PlayerInventory.Items.Count(); i++) { if (PlayerInventory.Items[i].ItemName == "emp

我有一个包含五个插槽的清单。在我的库存中添加一个项目时,我会检查最佳插槽。如果所有插槽都已满,我希望在控制台中显示一行并退出该方法,但我很难找出该部分。我知道best slot的值只能从0变为4,但是如果(best slot>=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 }
int-bestSlot=-1;
对于(int i=0;i=4)
{
控制台写入线(“库存已满”);
回来
}
如果(最佳插槽>=0)
{//添加项}
现在,该项目没有添加到库存中,但是
(bestSlot>=0)
中的代码仍在运行,当控制台显示该行时,我的库存中有一个空的插槽

if (PlayerInventory.Items[4].ItemName != "empty" && PlayerInventory.Items[4].ItemName == item.ItemName)
{
  Console.WriteLine("inventory full");
  return;
}
第一次看你的问题不是很清楚,但我认为你需要这个。您应该删除for循环以及循环中的所有内容bestSlot变量。如果需要,请在此之后输入所需的代码


你的问题是你要进入PlayerInventory的所有元素,但你只想检查5个元素。你可以用我给你看的代码来做这件事。如果5元素不为空且等于item.ItemName,则表示库存已满。如果你不想这样解释你想要什么…请你提供更多关于你的应用状态的详细信息。PlayerInventory包含哪些项目。项目包含。item的值是什么?尤其是item.ItemName。如果没有这一点,很难猜测您的代码将如何运行。没有添加项,因为没有该项的代码?因为你说2。bestSlot>=0是否执行正确?您应该将插槽的空值绑定到PlayerInventory。Items[i]==null而不是.ItemName==empty。您可能会意外地拥有一个名称为“空”的项目。