【问题标题】:How to give Dictionary to the Dictionary value如何给Dictionary赋值给Dictionary
【发布时间】:2023-02-24 01:21:43
【问题描述】:

我有一个有趣的问题。有谁知道我们是否可以为字典的值提供另一个字典?例子:

var dict = new Dictionary <int, int>
{
  {0, Dictionary<int, int>}, 
  {1, 565},
  {2, 5286},
  {3, 62836},
  ....
}

我想要的是检查 0 是否等于另一个字典的值。是否可以? 或者有不同的方法来进行检查?

【问题讨论】:

  • 似乎是一个 xy 问题,但您没有告诉我们 x 问题。你能展示你想要评估的东西吗?你有一个 dict2,你想知道 dict1 中的任何键是否作为值包含在该字典中?
  • 听起来像XY problem。您首先想要实现什么目标,您认为拥有内部字典可以解决这个问题?
  • 我只想用 0 检查它是否等于/包含另一个字典的键和值

标签: c# dictionary


【解决方案1】:

从技术上讲,您可以将 Dictionary 类型更改为 Dictionary&lt;int, object&gt;,但这似乎是一件奇怪的事情。特别是如果这是一个单值的东西。我会考虑这样的事情:

if (key == 0)
    otherDict.GetValueOrDefault(someOtherKey, out value);
else
    dict.GetValueOrDefault(key, out value);

【讨论】:

    【解决方案2】:

    就像您为常规变量创建一个 Dictionary 实例一样。用new

    var dict = new Dictionary <int, Dictionary<int, int>>
    {
      {0, new Dictionary<int, int>()}, 
      {1, new Dictionary<int, int>()}, 
    };
    

    请注意,外部字典必须是 Dictionary&lt;int, Dictionary&lt;int,int&gt;&gt; 类型,因为您不能让某些值属于一种类型而其他值属于另一种类型。如果那是你的目标,最好定义一个自定义类,它有一个 int 和一个可选的 Dictionary 成员,以及一些逻辑来告诉当前正在使用两者中的哪一个。

    通常不推荐使用“object”,因为你完全失去了类型安全。

    【讨论】:

    • 我只想用 0 检查它是否等于/包含另一个字典的键和值
    猜你喜欢
    • 2012-05-13
    • 1970-01-01
    • 2019-08-20
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2021-11-16
    相关资源
    最近更新 更多