В C# вложенные словари

что не так с моим синтаксис? Я хочу иметь возможность получить значение "Genesis" с этим info["Gen"]["name"]

    public var info = new Dictionary<string, Dictionary<string, string>> {
    {"Gen", new Dictionary<string, string> {
    {"name", "Genesis"},
    {"chapters", "50"},
    {"before", ""},
    {"after", "Exod"}
    }},
    {"Exod", new Dictionary<string, string> {
    {"name", "Exodus"},
    {"chapters", "40"},
    {"before", "Gen"},
    {"after", "Lev"}
    }}};

2 ответов


вы не можете определить поле класса с помощью var.

изменить var to Dictionary<string, Dictionary<string, string>>:

public Dictionary<string, Dictionary<string, string>> info =
    new Dictionary<string, Dictionary<string, string>>
    {
        {
            "Gen",
            new Dictionary<string, string>
            {
                {"name", "Genesis"},
                {"chapters", "50"},
                {"before", ""},
                {"after", "Exod"}
            }
        },
        {
            "Exod",
            new Dictionary<string, string>
            {
                {"name", "Exodus"},
                {"chapters", "40"},
                {"before", "Gen"},
                {"after", "Lev"}
            }
        }
    };

посмотреть здесь подробнее о var ключевое слово и его использование.


С MSDN;

  • var может использоваться только при объявлении и инициализации локальной переменной в том же операторе; переменная не может быть инициализирована в null, или группе методов или анонимной функции.

  • var нельзя использовать для полей в области класса.

  • переменные, объявленные с помощью var, не могут использоваться в инициализация выражение.

просто изменить свой var to Dictionary<string, Dictionary<string, string>>. Как;

public Dictionary<string, Dictionary<string, string>> info =
    new Dictionary<string, Dictionary<string, string>>{}