嗨,我正在用 C# 做一些事情,但我遇到了索引超出范围的错误,我不明白为什么。我有一个包含字符串的对象列表。用户可以添加许多字符串值,从而用相同数量的对象填充列表。当我稍后尝试使用 for 循环访问列表元素时,它给了我索引超出范围错误!这是对我的代码的模仿,基本上总结了它:
class game
{
public List<Player> PlayerList = new List<Player>();
public List<Player> Playerlist
{
get { return PlayerList; }
}
public static int PlayerCount = 0;
public void PlayGame()
{
Console.WriteLine("ENTER NUMBER OF PLAYERS: ");
PlayerCount = int.Parse(Console.ReadLine());
for (int n = 1; n < PlayerCount + 1; n++)
{
Console.WriteLine("ENTER NAME FOR PLAYER " + n + ":");
PlayerList.Add(new Player() { PlayerName = Console.ReadLine() });
}
Player playeraccess = new Player();
playeraccess.AddTurns();
}
public class Player
{
private static int throw1;
public int Throw1
{
get { return throw1; }
set { throw1 = value; }
}
private static int throw2;
public int Throw2
{
get { return throw2; }
set { throw2 = value; }
}
private static int throw3;
public int Throw3
{
get { return throw3; }
set { throw3 = value; }
}
int firstruncheck = 0;
int turnloop = 0;
int turncounter = 0;
List<Turns> playerturn = new List<Turns>();
public Player(string playername = "")
{
PlayerName = playername;
}
public string PlayerName { get; set; }
public override string ToString()
{
return base.ToString();
}
public void AddTurns()
{
game gameaccess = new game();
for(turnloop = 0; turnloop < game.PlayerCount; turnloop++)
{
gameaccess.Playerlist[turnloop].playerturn.Add(new Turns());
在最后一行,我得到一个索引超出范围错误。但它不应该发生,因为 User 已经在 PlayerList 中添加了元素,对吗?
答案 0 :(得分:1)
您正在为每个游戏实例创建一个新玩家列表,但在静态变量中跟踪计数(游戏所有实例的计数的一个实例)。
要解决这个问题,您应该决定是跟踪每场比赛的玩家(非静态列表和计数)还是每次运行程序(静态列表和计数)。对于后者,请阅读静态构造函数。