KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Say my dictionary needs to be keyed by a combination of ItemId and RegionId, both int. And say the type of the value side is "Data". I could do this a couple of ways: Way 1: multi-level dictionary, like this: Dictionary<int, Dictionary<int, Data>> myData; so a lookup could be coded like this: Data data1 = myData[itemId][regionId]; Not bad, but a drawback is that I would need to check for key existence at the first level, so safer code would be Data data1 = null; if (myData.ContainsKey(itemId)) data1 = myData[itemId][regionId]; Way 2: use a multi-part key. In this approach I would create a struct to represent the parts, and use a struct as the dictionary key: private struct MultiPartKey { public int ItemId; public int RegionId; } Dictionary<MultiPartKey, Data> myData; and a lookup would be like: MultiPartKey mpk; mpk.ItemId = itemId; mpk.RegionId = regionId; Data data1 = myData[mpk]; A possible disadvantage here is that it only works if my struct is composed entirely of simple value types, so that a bitwise comparison of two instances will be equal. (Right?) What do you think?
Tags (comma-separated)
Save Edits
Cancel