我有一個哈希表,其中包含這樣的值:檢查C#中組合的哈希表鍵/值對?
關鍵:123456值:UV
關鍵:654321值:HV
...
現在我要檢查,如果一個組合已經存在並且不要插入任何東西。因此,如果我的密鑰是123456,而我的值是UV,則不會添加新條目。我怎麼能這樣做?
由於:-)
我有一個哈希表,其中包含這樣的值:檢查C#中組合的哈希表鍵/值對?
關鍵:123456值:UV
關鍵:654321值:HV
...
現在我要檢查,如果一個組合已經存在並且不要插入任何東西。因此,如果我的密鑰是123456,而我的值是UV,則不會添加新條目。我怎麼能這樣做?
由於:-)
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"
這是迄今爲止最好的答案:D – Odnxe
你可以用這樣的東西做一個函數,我已經嘗試過了,它正在工作。
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);
}
}
}
我認爲你的嘗試獲得價值會返回true。 – Odnxe
使用包含哈希表的方法,並作爲@dtb說Hashtable中包含了一個關鍵的一個值,所以你的情況,如果你需要有東西像(「KEY1」,「值1」), (「key1」,「value2」),那麼可能更適合存儲這個對,因爲這個值的存在完全有效。
HashTable鍵是唯一的。 – SLaks
不推薦使用'HashTable'類;不要使用它,而是使用通用的'Dictionary'類(來自'System.Collections.Generic')。 –