【问题标题】:Create a dictionary in c# which is strongly coupled with another dictionary在 C# 中创建一个与另一个字典强耦合的字典
【发布时间】:2018-10-19 08:28:25
【问题描述】:

我正在使用 C# 制作带有边界检查和环绕等的六边形网格。库中的地图是字典 Dictionary<TileCoord,int> tileIndexByPosition。我还具有为每个图块获取CornerCoord 所需的功能。

我想创建一个字典Dictionary<CornerCoord,int> cornerIndexByPosition,其值取决于tileIndexByPosition。每当tileIndexByPosition 更改其元素时,为角落创建新字典似乎效率很低。

我的想法是使用 LINQ 的 Lazy 评估来强耦合两个字典。希望获得有关如何解决此问题的任何建议。

编辑:我使用这些字典来检查 TileCoordCornerCoord 是否是使用 ContainsKey 的地图的一部分。

【问题讨论】:

  • 创建一个类并将 int 存储在那里,然后使用它而不是 int 作为值。如果两个字典包含相同的引用,它应该可以工作
  • 我希望能够通过在字典中包含键来检查地图中是否存在特定坐标。
  • 也许可以创建一个类来保存所需的信息,并提供字典作为公共属性和方法来设置新点。在内部,您可以随心所欲地存储信息,您只需要确保它们都通过该方法更新。

标签: c# linq dictionary


【解决方案1】:

我会使用这样的 KeyValuePair

KeyValuePair<Dictionary<TileCoord,int>,Dictionary<CornerCoord,int>> kvp;

如果您更改键 (tileIndexByPosition),您还可以更改取决于 KeyValuePair 键的 KeyValuePair 值的字典值。

这就像你说你想要的。但我认为你想要这样的东西:

Dictonary<KeyValuePair<TileCoord,int>,KeyValuePair<CornerCoord,int>> dic;

我希望这会有所帮助。

亲切的问候

【讨论】:

  • 这是否意味着对tileIndexDictionary 的更改必须通过这个键值对来完成?
  • 您需要获取字典的Pair,然后更改字典的Pair。如果您想在我的第一个解决方案中更改tileIndexDictonary,可以这样做:kvp.Key[index] = //SomethingNew; 在我的第二个解决方案中:dic[index].Key = //SomethingNew;
猜你喜欢
  • 2021-03-09
  • 2021-05-15
  • 1970-01-01
  • 2022-10-05
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 2021-06-28
  • 1970-01-01
相关资源
最近更新 更多