【发布时间】:2026-02-14 03:50:01
【问题描述】:
我有一个名为 Player 的类,它具有属性 name 和 score,并且在每场比赛之后,它们都使用方法 File.AppendAllText(path, content+Environment.NewLine); 写入文件中。
现在我必须在单击标签“分数”并加载新表单时将它们添加到 listBox..但我想使用我的类 Player,并将项目添加到列表或作为播放器的东西,而不仅仅是从文件中加载它们。 ..我用SortedList 如下图...
SortedList<int, Player> topList = new SortedList<int, Player>();
private void Scores_Load(object sender, EventArgs e)
{
topList.Clear();
string filename = "highscores.txt";
using (StreamReader sr = File.OpenText(filename))
{
string line;
while ((line = sr.ReadLine()) != null)
{
string[] s = line.Split(';');
string name = s[0];
int score = int.Parse(s[1]);
Player newPlayer = new Player(name, score);
if (!topList.ContainsKey(score))
topList.Add(score, newPlayer);
}
}
Output();
}
private void Output()
{
lstScores.Items.Clear();
int rank = 1;
foreach (int k in topList.Keys.Reverse())
{
if (rank < 10)//top 9
{
Player temp = (Player)topList[k];
lstScores.Items.Add(" " + rank.ToString() + "\t" + temp.ToString());//override of method ToString(), so it returns in format Name+"\t"+Score;
}
rank++;
}
}
现在这是可以接受的,但这里的问题是我不能有两个相同的键,在这种情况下键是分数...所以我想知道如何修改它以便我可以有两个或更多相同的分数?....也许我应该使用List<>,但我不知道如何按分数对该列表进行排序,因为我在同一行文件中有字符串 + int (name + score)?
【问题讨论】: