2011-07-12 8 views
0

は、私はこのような値が含まれているハッシュテーブルを持っている:C#の組み合わせのHashtablesのキーと値のペアをチェックしますか?

キー:123456値:UV
キー:654321値:HV
...

今、私は組み合わせが既に存在するかどうかを確認したいです何も挿入しないでください。私のキーが123456で、値がUVの場合、新しいエントリは追加されません。どうすればこのことができますか? Hashtable(または、好ましくは、Dictionary<TKey, TValue>)が格納されているキーの1つの値を含ん

+2

ハッシュテーブルのキーは一意です。 – SLaks

+1

'HashTable'クラスは非推奨です。その代わりに 'System.Collections.Generic'の汎用の' Dictionary'クラスを使用してください。 –

答えて

1

:-)

おかげ。だから、あなたがコレクションに新しいキーと値のペアを追加した場合、あなたは、単にそうする前に、キーが存在するかどうかを確認することができます

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" 
+0

これはこれまでのところ最高の答えです:D – Odnxe

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); 
    } 
    } 
} 
+0

私はあなたの試行価値が真を返すと思います。 – Odnxe

1

が使用するHashtableの方法が含まれ、そして@dtbが言うようにハッシュテーブルは、キーの一つの値が含まれています(「KEY1」、「VALUE1」)のようなものを持っている必要がある場合は、あなたのケースではので、 ( "key1"、 "value2")多分この値の存在を完全に有効にするキーとしてペアを格納するより盛り上がりです。