2014-10-02 2 views
3

Я ищу способ определения словаря для повторного использования. то есть. Я могу создать объект словаря, не заполняя его необходимыми значениями.Создание словарей с предопределенными ключами C#

Вот что я в настоящее время (примечание код не тестировался, просто пример)

public Dictionary<string, string> NewEntryDictionary() 
{ 
    Dictionary<string, string> dic = new Dictionary<string, string>(); 

    // populate key value pair 
    foreach(string name in Enum.GetNames(typeof(Suits)) 
    { 
     dic.Add(name, ""); 
    } 

    return dic; 
} 

Конечный результат должен быть новый объект словаря с заранее заданным набором ключей. Но я хочу избежать этого.

+4

* Почему вы хотите избежать этого? Если вы не сообщите нам, что вам не нравится в текущем варианте, мы не можем помочь вам сделать это по-другому. –

+0

Я думаю, что он создает больше кода, чем нужно. Я также думаю, что он включает в себя все эти итерации, которые неэффективны. – visc

+0

Как вы ожидаете, чтобы заполнить словарь N элементами без N итераций? –

ответ

5

Не совсем ясно, беспокоитесь ли вы о количестве написанного кода или его эффективности. С точки зрения эффективности это нормально - это O (N), но этого трудно избежать, если вы заполняете словарь с N элементами.

Вы можете определенно сделать исходный код короче, хотя, с помощью LINQ:

public Dictionary<string, string> NewEntryDictionary() 
{ 
    return Enum.GetNames(typeof(Suits)).ToDictionary(name => name, name => ""); 
} 

Это не будет более эффективным, конечно ... это просто короткий код.

0

Если вы только хотите сохранить значения в соответствии с вашим перечислением, используйте Dictionary<Suits,String> вместо Dictionary<String,String>

Всего остального, Джон уже сказал. Используйте LinQ для более «причудливого» вида. Но это не улучшает производительность.