Возврат значения по умолчанию. (С #) - PullRequest
15 голосов
/ 15 декабря 2008

Я создаю свой собственный словарь и у меня возникают проблемы с реализацией функции TryGetValue . Когда ключ не найден, мне нечего назначить параметру out, поэтому я оставляю его как есть. Это приводит к следующей ошибке: «Выходной параметр« значение »должен быть назначен до того, как элемент управления покинет текущий метод»

Так что, в принципе, мне нужен способ получить значение по умолчанию (0, false или nullptr в зависимости от типа). Мой код похож на следующее:

class MyEmptyDictionary<K, V> : IDictionary<K, V>
{
    bool IDictionary<K, V>.TryGetValue (K key, out V value)
    {
        return false;
    }

    ....

}

Ответы [ 3 ]

44 голосов
/ 15 декабря 2008

Вы ищете ключевое слово default.

Например, в приведенном вами примере вы хотите что-то вроде:

class MyEmptyDictionary<K, V> : IDictionary<K, V>
{
    bool IDictionary<K, V>.TryGetValue (K key, out V value)
    {
        value = default(V);
        return false;
    }

    ....

}
6 голосов
/ 16 декабря 2008
default(T)
4 голосов
/ 15 декабря 2008
return default(int);

return default(bool);

return default(MyObject);

так что в вашем случае вы бы написали:

class MyEmptyDictionary<K, V> : IDictionary<K, V>
{
    bool IDictionary<K, V>.TryGetValue (K key, out V value)
    {
        ... get your value ...
        if (notFound) {
          value = default(V);
          return false;
        }
    }

....

}

...