Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 在foreach循环中创建列表时遇到问题_C# - Fatal编程技术网

C# 在foreach循环中创建列表时遇到问题

C# 在foreach循环中创建列表时遇到问题,c#,C#,我正在制作一个游戏排行榜 在这段代码中,我创建了一个名为“players”的列表,它是一个 来自名为“Player”的自定义类的对象 然后,代码从一个文件中读取所有高分(该文件具有 已创建),逐行。(每行采用以下格式: “姓名年龄性别分数”) 对于每一行,它将文本分成4个部分,并分配每个部分 将这些部分转换为变量 然后将这些变量添加到“玩家”列表中 我遇到的问题是,列表中的所有项目都以相同的值结束(我的highscores文件最后一行的值)。有没有办法解决这个问题 代码如下: pr

我正在制作一个游戏排行榜

  • 在这段代码中,我创建了一个名为“players”的列表,它是一个 来自名为“Player”的自定义类的对象
  • 然后,代码从一个文件中读取所有高分(该文件具有 已创建),逐行。(每行采用以下格式: “姓名年龄性别分数”)
  • 对于每一行,它将文本分成4个部分,并分配每个部分 将这些部分转换为变量
  • 然后将这些变量添加到“玩家”列表中

我遇到的问题是,列表中的所有项目都以相同的值结束(我的highscores文件最后一行的值)。有没有办法解决这个问题

代码如下:

    private void LeaderboardScreen_Load(object sender, EventArgs e)
    {
        string name = "error";
        string age = "error";
        string gender = "error";
        int score = 0;
        List<Player> players = new List<Player>();

        using (var fileStream = File.OpenRead(".\\InputInfo.bin"))
        using (var streamReader = new StreamReader(fileStream, true))
        {
            string line;
            line = streamReader.ReadLine();
        }


        foreach (var line in File.ReadLines(".\\InputInfo.bin"))  // loop for every line in the inputinfo file
        {
            string[] words = line.Split(); //Splits the line into seperate words, and puts them into an array called 'words'
            name = words[0]; // Makes the first word the name
            age = words[1]; //Makes the second word the age
            gender = words[2];//Makes the third word the gender
            score = Convert.ToInt32(words[3]);//Makes the forth word the score


           players.Add(new Player(name,age,gender,score));   **//This is where the problem is I think**            
        }


        players = players.OrderByDescending(i => score).ToList(); //sorts list of players into descending order

    }    

删除
static
。它表示您的成员由该类的所有实例共享,但实际上您希望每个实例共享这些成员。

删除
static
。它表示您的成员由该类的所有实例共享,但实际上您希望每个实例共享这些成员。

删除
static
。它表示您的成员由该类的所有实例共享,但实际上您希望每个实例共享这些成员。

删除
static
。它表示您的成员由类的所有实例共享,但实际上您希望每个实例共享这些成员。

如果您包含文件“InputInfo.bin”,则会有所帮助。你能把它寄出去吗

您还需要更改此行: 添加(新玩家(姓名、年龄、性别、分数))//我想这就是问题所在
为此: 玩家。添加(新玩家(姓名、年龄、性别、分数));//**我想这就是问题所在**


在//位于**

前面之前,它不会编译。如果您包含了文件“InputInfo.bin”,则会有所帮助。你能把它寄出去吗

您还需要更改此行: 添加(新玩家(姓名、年龄、性别、分数))//我想这就是问题所在
为此: 玩家。添加(新玩家(姓名、年龄、性别、分数));//**我想这就是问题所在**


在//位于**

前面之前,它不会编译。如果您包含了文件“InputInfo.bin”,则会有所帮助。你能把它寄出去吗

您还需要更改此行: 添加(新玩家(姓名、年龄、性别、分数))//我想这就是问题所在
为此: 玩家。添加(新玩家(姓名、年龄、性别、分数));//**我想这就是问题所在**


在//位于**

前面之前,它不会编译。如果您包含了文件“InputInfo.bin”,则会有所帮助。你能把它寄出去吗

您还需要更改此行: 添加(新玩家(姓名、年龄、性别、分数))//我想这就是问题所在
为此: 玩家。添加(新玩家(姓名、年龄、性别、分数));//**我想这就是问题所在**


在//位于**

之前,它不会编译!我不敢相信事情会这么简单,我花了很多时间试图找出问题所在。我会把它写下来以备将来参考。安得烈:除了特殊情况外,你不应该考虑。但是你确实想知道的是,而不是你现在使用的实例字段。这很有效!我不敢相信事情会这么简单,我花了很多时间试图找出问题所在。我会把它写下来以备将来参考。安得烈:除了特殊情况外,你不应该考虑。但是你确实想知道的是,而不是你现在使用的实例字段。这很有效!我不敢相信事情会这么简单,我花了很多时间试图找出问题所在。我会把它写下来以备将来参考。安得烈:除了特殊情况外,你不应该考虑。但是你确实想知道的是,而不是你现在使用的实例字段。这很有效!我不敢相信事情会这么简单,我花了很多时间试图找出问题所在。我会把它写下来以备将来参考。安得烈:除了特殊情况外,你不应该考虑。但您确实想知道的是,而不是您现在使用的实例字段。
public class Player
{
    public static int score = 0;
    public static string name;
    public static string age;
    public static string gender;

    public Player(string aName, string aAge, string aGender, int aScore)
    {         
        name = aName;
        age = aAge;
        gender = aGender;
        score = aScore;
    }
}