Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我得到一个索引超出范围的错误,但不确定为什么?_C# - Fatal编程技术网

C# 我得到一个索引超出范围的错误,但不确定为什么?

C# 我得到一个索引超出范围的错误,但不确定为什么?,c#,C#,嗨,我正在用C#做一些事情,我遇到了一个索引超出范围的错误,我不明白为什么。我有一个包含包含字符串的对象的列表。用户可以添加一些字符串值,从而用相同数量的对象填充列表。当我稍后尝试使用for循环访问列表元素时,它会给我索引超出范围的错误!这是对我的代码的模仿,基本上是对它的总结: class game { public List<Player> PlayerList = new List<Player>(); public List<Player&

嗨,我正在用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());
类游戏
{
public List PlayerList=新列表();
公共列表玩家列表
{
获取{return PlayerList;}
}
公共静态整数PlayerCount=0;
公共游戏
{
Console.WriteLine(“输入玩家数量:”);
PlayerCount=int.Parse(Console.ReadLine());
对于(int n=1;n

在最后一行,我得到了一个索引超出范围的错误。但这不应该发生,因为用户已将元素添加到PlayerList中,对吗?

您正在创建一个新的玩家列表,其中包含游戏的每个实例,但在静态变量中跟踪计数(所有游戏实例的一个计数实例)


要解决此问题,您应该决定是跟踪每场比赛的玩家(非静态列表和计数),还是跟踪程序的每次运行(静态列表和计数)。对于后者,请阅读静态构造函数。

这将回答您的问题:谢谢!这已经成功了!现在完全有意义了。