与Dictionary一起使用的foreach循环
本文关键字:foreach 循环 Dictionary 一起 | 更新日期: 2023-09-27 18:00:36
我有一个字典:private static Dictionary<int, GameInfo> gameDictionary;
,它包含GameInfo
类的实例,它本身包含下一个字典private Dictionary<int, PlayerInfo> playerDictionary;
现在,我想使用foreach
循环来迭代特定游戏的playerDictionary
中的所有项目:
foreach (KeyValuePair<int, PlayerInfo> item in gameDictionary[GAME_ID].)
{
}
如何在不使用playerDictionary
的public
修饰符的情况下执行此操作?GameInfo
包含第二个Dictionary,所以我可能无法使用索引器。
使用私有setter:将字段更改为公共属性
来自
private Dictionary<int, PlayerInfo> playerDictionary
至
public Dictionary<int, PlayerInfo> PlayerDictionary { get; private set;}
实现这一点的一种方法是在有可见性的地方处理数据。
public class GameInfo {
private Dictionary<int, PlayerInfo> playerDictionary;
static void ProcessPlayerInfo(Dictionary<int, GameInfo> gameDictionary, int gameNr = 1)
{
foreach (var key in gameDictionary[gameNr].playerDictionary.Keys)
{
var PlayerInfo = gameDictionary[gameNr].playerDictionary[key];
//do something
}
}
}
最好的方法是在GameInfo中创建一个在playerDictionary上循环的公共方法。然后可以使用((GameInfo)gamedictionary[Game_ID].value).PublicMethod()
调用它。
使用这种方法意味着你没有代码在GameInfo之外与playerDictionary交互,这意味着你的逻辑可以更好地分离,如果你更改了playerDiction,你不需要更改多个类。