C# 我得到一个索引超出范围的错误,但不确定为什么?
嗨,我正在用C#做一些事情,我遇到了一个索引超出范围的错误,我不明白为什么。我有一个包含包含字符串的对象的列表。用户可以添加一些字符串值,从而用相同数量的对象填充列表。当我稍后尝试使用for循环访问列表元素时,它会给我索引超出范围的错误!这是对我的代码的模仿,基本上是对它的总结:C# 我得到一个索引超出范围的错误,但不确定为什么?,c#,C#,嗨,我正在用C#做一些事情,我遇到了一个索引超出范围的错误,我不明白为什么。我有一个包含包含字符串的对象的列表。用户可以添加一些字符串值,从而用相同数量的对象填充列表。当我稍后尝试使用for循环访问列表元素时,它会给我索引超出范围的错误!这是对我的代码的模仿,基本上是对它的总结: class game { public List<Player> PlayerList = new List<Player>(); public List<Player&
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());
类游戏
{
public List PlayerList=新列表();
公共列表玩家列表
{
获取{return PlayerList;}
}
公共静态整数PlayerCount=0;
公共游戏
{
Console.WriteLine(“输入玩家数量:”);
PlayerCount=int.Parse(Console.ReadLine());
对于(int n=1;n
在最后一行,我得到了一个索引超出范围的错误。但这不应该发生,因为用户已将元素添加到PlayerList中,对吗?您正在创建一个新的玩家列表,其中包含游戏的每个实例,但在静态变量中跟踪计数(所有游戏实例的一个计数实例)
要解决此问题,您应该决定是跟踪每场比赛的玩家(非静态列表和计数),还是跟踪程序的每次运行(静态列表和计数)。对于后者,请阅读静态构造函数。这将回答您的问题:谢谢!这已经成功了!现在完全有意义了。