这个字典初始值设定项有什么问题

时间:2016-08-05 13:04:47

标签: c# c#-6.0

我可能已经完全失明了,但我看不出这段代码有什么问题:

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中填充这些值可以正常工作。

各州是恩赐顺便说一句。

2 个答案:

答案 0 :(得分:4)

问题是由Resharper引起的,只是假设我使用的是C#6编译器并且正在纠正&#39;我的代码相应。经过检查,我没有使用C#6,而且Resharper很幸运我没有删除它

答案 1 :(得分: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