C#通过用户输入从列表中删除某个项目的问题
我正在尝试在文本游戏中创建一个删除角色,这段代码将使用一种方式,如果玩家使用他的角色ID来删除角色,ID是列表中的位置+1,但是现在我不能删除角色,因为它说这超出了界限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) {
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
循环将需要一些工作,因为您需要在删除项目后中断循环,或者调整循环索引以说明删除的项目,以及最终的中断方法answhile(true)
完全没有意义。感谢您的帮助,出于某种原因,回复。它没有告诉我这一点,也感谢您告诉我最后的休息时间。
Listas.jogadores.RemoveAt(i);