C#通过用户输入从列表中删除某个项目的问题

C#通过用户输入从列表中删除某个项目的问题,c#,.net,text,C#,.net,Text,我正在尝试在文本游戏中创建一个删除角色,这段代码将使用一种方式,如果玩家使用他的角色ID来删除角色,ID是列表中的位置+1,但是现在我不能删除角色,因为它说这超出了界限 public static void DeletarJogador() { int ID; Console.WriteLine("Characters resting at barracks: \n"); foreach(Player p in Listas.jogadores) {

我正在尝试在文本游戏中创建一个删除角色,这段代码将使用一种方式,如果玩家使用他的角色ID来删除角色,ID是列表中的位置+1,但是现在我不能删除角色,因为它说这超出了界限

public static void DeletarJogador()
{
    int ID;
    Console.WriteLine("Characters resting at barracks: \n");
    foreach(Player p in Listas.jogadores)
    {
        Console.WriteLine($">Name: {p.NomePlayer}           ID: {p.IDPlayer}");
        Console.WriteLine();
    }

    while(true)
    {
        Console.Write("Choose a character to delete, by ID: ");
        ID = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine(Listas.jogadores.Count);
        for(int i = 0 ; i <= Listas.jogadores.Count; i++)
        {
            Console.WriteLine(Listas.jogadores.Count);
            if(ID == Listas.jogadores[i].IDPlayer)
            {
                Listas.jogadores.RemoveAt(ID);
            }
        }
        break;
    }
}
publicstaticvoiddeletarjogador()
{
int-ID;
Console.WriteLine(“在兵营休息的角色:\n”);
foreach(Listas.jogadores中的玩家p)
{
Console.WriteLine($”>Name:{p.NomePlayer}ID:{p.IDPlayer}”);
Console.WriteLine();
}
while(true)
{
编写(“选择要删除的字符,按ID:”);
ID=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(Listas.jogadores.Count);
对于(int i=0;i
应该是:

Listas.jogadores.RemoveAt(i);

如果您在调试器(标记的副本中描述的主要技术之一)中仔细检查了代码,您将完全看到问题:您传递给
RemoveAt()的值
方法并非没有有效值的范围,事实上也不是您想要传递的值。注意:除此之外,您的
for
循环将需要一些工作,因为您需要在删除项目后中断循环,或者调整循环索引以说明删除的项目,以及最终的
中断
方法ans
while(true)
完全没有意义。感谢您的帮助,出于某种原因,回复。它没有告诉我这一点,也感谢您告诉我最后的休息时间。
Listas.jogadores.RemoveAt(i);