2016-08-05 2 views
1

я, возможно, пошел полностью слепым, но я не вижу ничего плохого в этом коде:Что с этим Dictionary инициализатором

public static Dictionary<States, string> NameMap = new Dictionary<States, string> 
{ 
    [States.State1] = "State1", 
    [States.State2] = "State2", 
    [States.State3] = "State3", 
    [States.State4] = "State4", 
    [States.State5] = "State5", 
    [States.State6] = "State6" 
}; 

При попытке построить я тон этих ошибок:

Invalid expression term '[' 

(Это указывает на первый кронштейн на каждой строке)

и

Syntax error, ',' expected 

Это точки на * колоннах:

[States*.State1]* = "State1", 

Любая помощь будет высоко ценится. Нанесение этих значений в via .Add отлично работает.

Штаты - это передовица.

+1

Может быть, это в какой-то файл CSHTML или ASPX ? –

+10

Вы уверены, что используете C# 6? – Andrew

+0

Ошибка указывает на то, что вы пытаетесь скомпилировать это с помощью более старого компилятора C#. – dasblinkenlight

ответ

4

Проблема была вызвана Resharper, просто предполагая, что я использую компилятор C# 6 и «исправляю» свой код соответственно. При проверке я не использую C# 6, и Resharper повезло, что я его не удалил

+6

Вы можете дать подсказку Resharper о версии C#, указав «Уровень языка C#» в свойствах проекта. – 3615

2

Ваш синтаксис правильный!

Вы можете проверить его здесь: http://www.volatileread.com/utilitylibrary/snippetcompiler?id=69450

Это называется индекс Инициализаторы

объектов и сбор Инициализаторы полезны для декларативно инициализирующих полей и свойств объектов, или давая коллекцию начальный набор элементов. Инициализация словарей и других объектов с индексаторами менее изящна. Мы добавляем новый синтаксис для инициализаторы объектов позволяет устанавливать значения ключей через любой индексатор, что новый объект имеет

var numbers = new Dictionary<int, string> { 
    [7] = "seven", 
    [9] = "nine", 
    [13] = "thirteen" 
}; 

Источник: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6

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