gpt4 book ai didi

c# - 按索引获取 C# 字典的项目?

转载 作者:行者123 更新时间:2023-11-30 15:30:33 25 4
gpt4 key购买 nike

我正在统一处理一个项目,我使用字典来存储玩家信息,然后将 userID int 分配给玩家,这就是我试图在字典中创建玩家信息的索引位置,但我认为我试图完全错误地使用这个系统。目前我有这段代码:

public class Players : IComparable<Players> {
public int userID;
public string userName;
public int userHealth;
public GameObject userPlayer;

public Players(int newID,string Name,int Health,GameObject player){
userID = newID;
userName = Name;
userHealth = Health;
userPlayer = player;
}

public int CompareTo(Players other){
if(other == null){
return 1;
}
return userID - other.userID;
}
}

创建我使用的词典

private Dictionary<NetworkPlayer, Players> playerList = new Dictionary<NetworkPlayer,Players>();

添加到它我使用

playerList.Add(player,new Players(playerList.Count,"Test", 100, playerObj));

我希望使用 playerList.Count 部分作为对其进行索引的方法,然后按此索引对其进行排序以获得我想要的播放器......有没有办法做到这一点正确吗?这是我第一次尝试在 C# 中使用字典,我发现很难理解它们是如何工作的,如果有人可以帮助我找到一种工作方法的话。我需要做的就是根据其索引或使用 NetworkPlayer 类返回数据。

如果有人可以帮助引导我找到执行此 id 的工作方法,我将不胜感激,谢谢。

最佳答案

标准词典的项目不会以这种方式排序。通常情况下,如果你想通过特定的ID来拉出播放器,最好将其作为字典中的键,即:

private Dictionary<int, Players> playersByID = new Dictionary<int, Players>();
private Dictionary<NetworkPlayer, Players> playersByNetwork = new Dictionary<NetworkPlayer, Players>();

请注意,您可以存储两个字典,每个字典对应一种查找形式:

然后你可以存储:

int id = nextID; // Using ID counter...

var newPlayer = new Players(id, "Test", 100, playerObj);
playersById.Add(id, newPlayer);
playersByNetwork.Add(player, newPlayer);

并通过以下方式获取:

var player = playersById[120];

或通过:

var player = playersByNetwork[netPlayer];

旁注:我没有使用 Count 作为 ID,因为如果您删除玩家,那将失败……如果这是您在系统中永远不会做的事情,您可以返回使用 Count 属性作为您的下一个 ID。

关于c# - 按索引获取 C# 字典的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21867158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com