首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更好的集合或在字典中搜索的更好方法

更好的集合或在字典中搜索的更好方法
EN

Stack Overflow用户
提问于 2017-05-24 08:16:31
回答 4查看 52关注 0票数 1

我需要用相应的值(true2)存储2键(12)。

代码语言:javascript
复制
Dictionary<bool, int> X = new Dictionary<bool, int>();
X.Add(true, 1);
X.Add(false, 2);

还有其他更好的集合仅作为两个键值对吗?

然后,对于一个外部值bool true或false,我需要查找该键的值。

代码语言:javascript
复制
int x = GetIntFromDictionary(X, true);

private static int GetIntFromDictionary(Dictionary<bool, int> dict, bool val)
{
    int v = 0;
    if (dict.ContainsKey(val))
    {
        v = dict[val];
    }

    return v;
}

如果合适的话,在字典或其他集合中查找值的最佳方法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-24 08:50:31

类型为的可能性是truefalse,这就是为什么ContainsKey没有必要,TryGetValue.

代码语言:javascript
复制
    Dictionary<bool, int> X = new Dictionary<bool, int>() {
      {true, 5},
      {false, -15},
    };

    Dictionary<bool, int> OtherX = new Dictionary<bool, int>() {
      {true, 123},
      {false, 456},
    };


    ...

    private static int GetIntFromDictionary(Dictionary<bool, int> dict, bool val) {
      return dict[val];
    }    

    ...

    int result1 = GetIntFromDictionary(X, true);
    int result2 = GetIntFromDictionary(X, false);
    int result3 = GetIntFromDictionary(OtherX, true);
    int result4 = GetIntFromDictionary(OtherX, false);
票数 0
EN

Stack Overflow用户

发布于 2017-05-24 08:19:55

由于val不可空,而且您的“字典”只包含两个键,所以您不需要任何集合,只需设置一个三元或if语句

代码语言:javascript
复制
private static int GetValue(bool val)
{
    return val ? 1 : 2;
}
票数 2
EN

Stack Overflow用户

发布于 2017-05-24 08:31:02

您可以使用TryGetValue

代码语言:javascript
复制
private static int GetValue(Dictionary<bool, int> dict, bool val)
{
    int value;
    dict.TryGetValue(val, out value);

    return value;
}

如果存在,它将返回关联的值,否则为0。

如果0是合法值,则使用方法bool返回值

代码语言:javascript
复制
private static int GetValue(Dictionary<bool, int> dict, bool val)
{
    int value;
    if (dict.TryGetValue(val, out value))
    {
        return value;
    }

    return int.MinValue; // or any other indication
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44152751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档