在C# 3.0中初始化字典


Initializing dictionary in c# 3.0

以下集合初始化出现问题:

1
2
3
4
5
6
private Dictionary<string, string> mydictionary = new Dictionary<string, string>()
{
    {"key","value"}
    , {"key2","value2"}
    , {"key3","value3"}
};

我不断地得到关于语法的各种编译器错误。根据我在谷歌上搜索的内容,这应该是完全有效的C 3.0代码。

弹出的第一个错误是:

1
Error   102 ; expecte

我做错什么了?

更新

它一直告诉我它期望的;at在结束)括号之后。

我正试图在静态类中创建这个。如果我把这个去掉,一切都会编译好的。


我的结论是:您的目标是框架2.0,否则就不可能得到那个错误。

你101%确定你在使用框架3.0吗?

编辑

1 - On the Project (Solution Explorer), right click on ProjectName and go to Properties.

2 - Check on the Application tab the item"Target Framework"

If says 2.0 change it to 3.0 and do the same for all the projects on the solution.

< /块引用>


您是否将其设置为属性/字段?你用private标记了它?

1
2
3
4
5
6
Dictionary<string, string> temp = new Dictionary<string, string>()
    {
        {"key","value" },
        {"key1","value" },
        {"key2","value2" }
    };

这是一个名为temp的局部变量字典

1
2
3
4
5
6
private Dictionary<string, string> _fieldDictionary = new Dictionary<string, string>()
        {
            {"key","value" },
            {"key1","value" },
            {"key2","value2" }
        };

这是本地成员。

这两个编译程序,是否还有更多的代码要遗漏?

我只需要开一个新的班级,慢慢地把它放在字段、属性等中。直到你发现错误。当我使用vs 2008时,您提供的代码是完全合法的。如果您缓慢地重新创建类,它可能会显示您的错误实际上在哪里。


查找该行上方的任何潜在错误;我将您的代码复制到了Visual Studio中的一个新项目中,并且在编译该项目时没有任何错误。你把这本词典定义为什么的一部分?


如果只声明字典,然后添加键/值对,该怎么办?

1
2
3
4
  Dictionary<string, string> temp = new Dictionary<string, string>();
    temp.Add("key","value");
    temp.Add("key1","value1");
    temp.Add("key2","value2");


I think you need to get rid of the().(corrected by david basarab.谢谢戴维!

本页显示了一些很好的示例:http://www.codeguru.com/csharp/csharp/cs_misc/designtechnologies/article.php/c1987

编辑

好吧,所以我最终推出了VS2008,我自己也不得不尝试一下。

我将op的代码直接粘贴到一个winforms项目中,就在"public form1()"方法中,然后点击build按钮,它就不会编译了。

删除"private"关键字,它编译得很好。

(我尝试使用public、internal等,但它们都不能编译…)