我有一个字典:private static Dictionary<int, GameInfo> gameDictionary;
,其中包含GameInfo
类的实例,该类本身包含下一个字典private Dictionary<int, PlayerInfo> playerDictionary;
现在我想使用foreach
循环来迭代playerDictionary
中特定游戏的所有项目:
foreach (KeyValuePair<int, PlayerInfo> item in gameDictionary[GAME_ID].)
{
}
如何在不使用public
的{{1}}修饰符的情况下执行此操作?
playerDictionary
包含第二个词典,因此我可能无法使用索引器。
答案 0 :(得分:2)
使用私人设定器将您的字段更改为公共属性:
这
private Dictionary<int, PlayerInfo> playerDictionary
到
public Dictionary<int, PlayerInfo> PlayerDictionary { get; private set;}
答案 1 :(得分:2)
执行此操作的一种方法是获得可见性的流程数据。
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
}
}
}
答案 2 :(得分:1)
最好的方法是在GameInfo中创建一个遍历playerDictionary的公共方法。然后,您可以使用((GameInfo)gamedictionary[Game_ID].value).PublicMethod()
来调用它。
使用此方法意味着您没有代码与GameInfo之外的playerDictionary交互,这意味着您的逻辑分离得更好,如果您对playerDictionary进行更改,则不需要更改多个类。