Проверьте пары ключ / значение Hashtables для комбинации в C #? - PullRequest
0 голосов
/ 12 июля 2011

У меня есть Hashtable, который содержит такие значения:

ключ: 123456 значение: УФ
ключ: 654321 значение: HV
...

Теперь я хочу проверить, существует ли уже комбинация, и ничего не вставлять. Поэтому, если мой ключ 123456, а мое значение - УФ, новая запись не добавляется. Как я мог это сделать?

Спасибо: -)

Ответы [ 3 ]

1 голос
/ 12 июля 2011

Используйте метод Contains в Hashtable, и, как говорит @dtb, Hashtable содержит одно значение для ключа, так что в вашем случае, если вам нужны такие вещи, как ("key1", "value1"), ("key1" , "value2"), то, возможно, более уместно сохранить пару как ключ, делающий существование этих значений совершенно допустимым.

1 голос
/ 12 июля 2011

A Hashtable (или, предпочтительно, Dictionary ) содержит ровно одно значение для сохраненного ключа. Таким образом, если вы добавляете новую пару ключ-значение в коллекцию, вы можете просто проверить наличие ключа, прежде чем сделать это:

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 голосов
/ 12 июля 2011

Вы могли бы сделать функцию с чем-то вроде этого, я попробовал, и это работает.

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);
    }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...