You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForm实现字符串列表与排序后整数列表位置匹配的高分系统

解决高分系统排序后分数与名称不匹配的问题

嘿,这个坑我见过好多人踩——分开维护分数和名称两个独立列表,排序的时候只动分数列表,那名称自然就跟分数“分家”了!问题根源很简单:Sort()只会单独对分数列表做排序操作,完全不会管名称列表的索引对应关系,排序后两个列表的位置就彻底错位了。

核心解决方案:把分数和名称绑定成一个整体

你需要把每个玩家的名称和对应的分数打包成一个“条目”,这样排序的时候整个条目一起移动,就能保证名称和分数始终对应。这里给你两种实用的实现方式:

方式1:自定义高分条目类(最清晰易维护)

先创建一个简单的类来封装名称和分数,这样代码可读性更高,后续扩展功能(比如添加时间戳)也更方便:

// 定义一个封装高分信息的类
public class HighScoreEntry
{
    public string PlayerName { get; set; }
    public int PlayerScore { get; set; }
}

然后把读取到的数据打包成这个类的列表,再统一排序:

// 假设你已经从文件中读取到了分数列表scores和名称列表gameClass.scorenames
List<HighScoreEntry> highScoreList = new List<HighScoreEntry>();

for (int i = 0; i < scores.Count; i++)
{
    // 将对应索引的名称和分数绑定成一个条目
    highScoreList.Add(new HighScoreEntry 
    { 
        PlayerName = gameClass.scorenames[i], 
        PlayerScore = scores[i] 
    });
}

// 按分数降序排序(如果要升序就换成a.PlayerScore.CompareTo(b.PlayerScore))
highScoreList.Sort((entryA, entryB) => entryB.PlayerScore.CompareTo(entryA.PlayerScore));

// 最后填充两个富文本框,此时名称和分数完全对应
foreach (var entry in highScoreList)
{
    scoreRichTextBox.AppendText(entry.PlayerScore + Environment.NewLine);
    nameRichTextBox.AppendText(entry.PlayerName + Environment.NewLine);
}

方式2:使用元组(快速实现,无需额外类)

如果不想新建类,也可以用C#的元组直接打包数据,适合快速迭代的场景:

// 将分数和名称打包成元组列表
var highScoreTuples = new List<(int Score, string Name)>();

for (int i = 0; i < scores.Count; i++)
{
    highScoreTuples.Add((scores[i], gameClass.scorenames[i]));
}

// 按分数降序排序
highScoreTuples.Sort((tupleA, tupleB) => tupleB.Score.CompareTo(tupleA.Score));

// 填充文本框
foreach (var tuple in highScoreTuples)
{
    scoreRichTextBox.AppendText(tuple.Score + Environment.NewLine);
    nameRichTextBox.AppendText(tuple.Name + Environment.NewLine);
}

为什么原来的方法行不通?

你之前的操作相当于把“张三得100分”拆成了两个独立的列表:一个放100,一个放张三。当你对分数列表排序时,100可能从第3位跑到第1位,但张三还留在第3位,自然就和其他分数配对错了。把数据绑定成整体后,排序时是整个“张三+100”的条目一起移动,就不会出现错位问题了。

内容的提问来源于stack exchange,提问作者Ryan S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:40:03