2009-05-08 2 views
47

Поддерживает ли C# hashtables в однострочных выражениях? Я имею в виду то, что эквивалентно ниже Python:Наиболее лаконичный способ инициализации хэш-таблицы C#

mydict = {"a": 23, "b": 45, "c": 67, "d": 89} 

Другими словами, существует ли альтернатива установки каждой пары ключ-значение в отдельном выражении?

ответ

73

C# 3 имеет расширение языка, называемое Инициализаторы коллекции, которые позволяют инициализировать значения коллекции в одном выражении.

Ниже приведен пример с использованием Dictionary<,>:

using System; 
using System.Collections.Generic; 

class Program 
{ 
    static void Main() 
    { 
     var dict = new Dictionary<string, int> 
     { 
      {"a", 23}, {"b", 45}, {"c", 67}, {"d", 89} 
     }; 
    } 
} 

Это расширение языка поддерживается в C# 3 компилятор и любого типа, который реализует IEnumerable и имеет Add публичный метод.

Если вас интересуют, я хотел бы предложить вам прочитать this question I asked here on StackOverflow, чтобы почему С # команды реализуется это расширение языка такого любопытным образом (когда вы читаете отличные ответы на вопрос, вы увидите, что он делает много смысл).

+1

Есть ли аналогичный синтаксис для определения словарей, которые имеют несколько уровней в глубину? Например, 'Dictionary >'? –

+0

Я нашел технику и добавлю ее как отредактировать к вашему ответу, хотя она немного многословна, не уверена, что она спасает кого-то много времени. –

Смежные вопросы