Как добавить метод Get () в стиле Python, который принимает значение по умолчанию для моих словарей C #? - PullRequest
0 голосов
/ 28 января 2009

Я бы хотел иметь возможность указать значение по умолчанию для возврата, если указанный мной ключ не найден в словаре.

, например

int default = 5;
string key = "MyKey";
int foo = myDictionary.GetValue(key, default);

, если key в myDictionary foo, должно содержать значение из словаря, в противном случае оно будет содержать 5.

Ответы [ 2 ]

3 голосов
/ 28 января 2009

Я нашел фрагмент кода здесь , который прекрасно выполняет свою работу, добавив метод расширения в IDictionary:

using System.Collections.Generic;

namespace MyNamespace {
    public static class DictionaryExtensions {
        public static V GetValue<K, V>(this IDictionary<K, V> dict, K key) {
            return dict.GetValue(key, default(V));
        }

        public static V GetValue<K, V>(this IDictionary<K, V> dict, K key, V defaultValue) {
            V value;
            return dict.TryGetValue(key, out value) ? value : defaultValue;
        }
    }
}
0 голосов
/ 28 января 2009

Лучший способ - использовать TryGetValue, возможный способ:


    int default = 5;
    string key = "MyKey"; 
    int foo = 0;
    defaultValue = 5;
    (myDictionary.TryGetValue(key, out foo))?return foo: return defaultValue;

Если вы пытаетесь получить значение, которого нет, TryGetValue возвращает false, что означает, что вы используете вторую часть предложения.

Вы также можете установить для foo значение по умолчанию, использовать TryGetValue и возвращать foo в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...