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;
}
}