我需要存储2个密钥(true
和false
)及其对应的值(1
和2
)。
Dictionary<bool, int> X = new Dictionary<bool, int>();
X.Add(true, 1);
X.Add(false, 2);
还有其他更好的集合只有2个键值对吗?
然后对于其中一个外部值bool为true或false,我需要查找该键的值
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;
}
如果合适,在字典或其他集合中查找值的最佳方法是什么?
答案 0 :(得分:2)
由于val
不可为空,并且您声明您的“词典”只包含2个键,因此您不需要任何集合,只需设置三元组或if语句
private static int GetValue(bool val)
{
return val ? 1 : 2;
}
答案 1 :(得分:1)
您可以使用TryGetValue
private static int GetValue(Dictionary<bool, int> dict, bool val)
{
int value;
dict.TryGetValue(val, out value);
return value;
}
如果存在则返回相关值,否则返回0。
如果0是合法值,请使用方法bool
返回值
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
}
答案 2 :(得分:1)
如果将true / false映射到外部值是你的问题,那么我会做类似的事情。
var mapping = new int[] { externalValueFalse, externalValueTrue};
private static int GetValue(bool val)
{
return mapping[val ? 1 : 0];
}
答案 3 :(得分:0)
bool
类型的键的仅可能性为true
和false
;这就是ContainsKey
,TryGetValue
...
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);