Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这个字典初始值设定项有什么问题_C#_C# 6.0 - Fatal编程技术网

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

C# 这个字典初始值设定项有什么问题,c#,c#-6.0,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",

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

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"
};
(该点位于每条线上的第一个括号处)

这指向*列:

[States*.State1]* = "State1",
任何帮助都将不胜感激。在via.Add中ploping这些值可以正常工作


States是一个Enum顺便说一句。

问题是由于Resharper简单地假设我正在使用C#6编译器并相应地“更正”我的代码而导致的。经检查,我没有使用C#6,而Resharper幸运的是我没有删除它

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

您的语法是正确的

您可以在此处进行测试:

这称为索引初始值设定项

对象和集合初始值设定项对于声明式 初始化对象的字段和属性,或提供集合 元素的初始集合。初始化字典和其他 带有索引器的对象不那么优雅。我们正在添加一个新的语法到 对象初始值设定项,允许您通过任何 新对象具有的索引器

var numbers=新字典{
[7] =“七”,
[9] =“九”,
[13] =“十三”
};

来源:

您的语法是正确的

您可以在此处进行测试:

这称为索引初始值设定项

对象和集合初始值设定项对于声明式 初始化对象的字段和属性,或提供集合 元素的初始集合。初始化字典和其他 带有索引器的对象不那么优雅。我们正在添加一个新的语法到 对象初始化器,允许您通过任意键将值设置为键 新对象具有的索引器

var numbers=新字典{
[7] =“七”,
[9] =“九”,
[13] =“十三”
};

来源:

可能这是在某个CSHTML或ASPX文件中?您确定使用的是C#6吗?错误表明您试图使用旧的C#编译器编译此代码。我自己尝试了您的代码,它编译起来没有任何问题。检查您的csproj和目标框架。@Glitcher让我猜猜:您输入了一个老式的初始值设定项,然后ReSharper建议重构?这就是我学习这种新语法的方式:-)也许这是在一些CSHTML或ASPX文件中?你确定你使用的是C#6吗?错误表明你试图用旧的C#编译器编译它。我自己尝试了你的代码,它编译起来没有任何问题。检查您的csproj和目标框架。@Glitcher让我猜猜:您输入了一个老式的初始值设定项,然后ReSharper建议重构?这就是我学习这种新语法的方式:-)您可以通过在项目属性中指示“C语言级别”来提示Resharper关于C版本的信息。您可以通过在项目属性中指示“C语言级别”来提示Resharper关于C版本的信息。
Syntax error, ',' expected
[States*.State1]* = "State1",
var numbers = new Dictionary<int, string> {
    [7] = "seven",
    [9] = "nine",
    [13] = "thirteen"
};