我有一个Hashtable,其中包含如下值:
键:123456值:UV
键:654321值:HV
...
现在我想检查一个组合是否已经存在并且不要插入任何东西。因此,如果我的密钥是123456并且我的值是UV,则不会添加任何新条目。我怎么能这样做?
谢谢: - )
答案 0 :(得分:1)
Hashtable(或者,最好是Dictionary<TKey, TValue>)只包含存储密钥的一个值。因此,如果您向集合中添加新的键值对,则可以在执行此操作之前检查键的存在性:
static bool AddIfNotContainsKey<K,V>(this Dictionary<K,V> dict, K key, V value)
{
if (!dict.ContainsKey(key))
{
dict.Add(key, value);
return true;
}
return false;
}
示例:的
var dict = new Dictionary<string, string>();
dict.AddIfNotContainsKey("123456", "UV"); // returns true
dict.AddIfNotContainsKey("654321", "HV"); // returns true
dict.AddIfNotContainsKey("123456", "??"); // returns false
string result = dict["123456"]; // result == "UV"
答案 1 :(得分:1)
使用Hashtable的Contains方法,并且@dtb表示Hashtable包含一个键的值,所以在你的情况下你需要像(“key1”,“value1”),(“key1”) ,“value2”)然后可能是更合适的存储该对作为关键使这个值的存在完全有效。
答案 2 :(得分:0)
你可以用这样的东西做一个函数,我已经尝试了它并且它正在工作。
class Program
{
static void Main()
{
Dictionary<string, bool> d = new Dictionary<string, bool>();
d.Add("cat", true);
d.Add("dog", false);
d.Add("sprout", true);
// A.
// We could use ContainsKey.
if (d.ContainsKey("dog"))
{
// Will be 'False'
bool result = d["dog"];
Console.WriteLine(result);
}
// B.
// Or we could use TryGetValue.
bool value;
if (d.TryGetValue("dog", out value))
{
// Will be 'False'
bool result = value;
Console.WriteLine(result);
}
}
}