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

本文关键字:什么 问题 字典 | 更新日期: 2023-09-27 18:01:04

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

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中效果良好。

States是一个枚举btw.

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

问题是由Resharper简单地假设我使用的是C#编译器并相应地"更正"我的代码引起的。经过检查,我没有使用C#6,Resharper很幸运我没有删除它

您的语法是正确的

您可以在此处进行测试: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