5

我创建了一个列表作为类的属性,并希望在定义列表时设置键/值对。我最初使用的是结构,但意识到它可能不是理想的解决方案,所以我将其更改为列表。问题是我遇到了语法错误。

有任何想法吗?

private List<KeyValuePair<String,String>> formData = new List<KeyValuePair<String, String>>[]
    {
            new KeyValuePair<String, String>("lsd",""),
            new KeyValuePair<String, String>("charset", "")
    };
4

6 回答 6

12

可能我遗漏了一些东西,但我会使用字典而不是
那么简单....

Dictionary<string, string>formData = new Dictionary<string, string>
{
    {"lsd", "first"},
    {"charset", "second"}
};    

然后以下列方式使用它:

foreach(KeyValuePair<string, string>k in formData)
{
    Console.WriteLine(k.Key);
    Console.WriteLine(k.Value);
}
....
if(formData.ContainsKey("lsd"))
    Console.WriteLine("lsd is already in");
....    
string v = formData["lsd"];
Console.WriteLine(v);
于 2013-02-27T10:38:43.003 回答
2

试试这个:

private List<KeyValuePair<String,String>> formData = new List<KeyValuePair<String, String>>
{
    new KeyValuePair<String, String>("lsd",""),
    new KeyValuePair<String, String>("charset", "")
};

您的定义中有一个额外[]的内容。你没有创建一个数组,所以你不需要它。此外,当使用一些值初始化列表时,这些值应该用逗号 ( ,) 分隔。

在我看来,更好的方法是使用Tupleclass

pirvate List<Tuple<string, string>> formData = new List<Tuple<string, string>>()
{
    new Tuple<string, string>("lsd",""),
    new Tuple<string, string>("charset", "")
};
于 2013-02-27T10:32:29.450 回答
0

将第三行的分号更改为逗号,并从第一行删除方括号。

private List<KeyValuePair<String,String>> formData = new List<KeyValuePair<String, String>>
{
        new KeyValuePair<String, String>("lsd",""),
        new KeyValuePair<String, String>("charset", "")
};

顺便说一句,如果您将其更改为字典,您将能够更轻松地通过键查找值。

于 2013-02-27T10:30:48.297 回答
0

[]从声明中删除

于 2013-02-27T10:31:40.470 回答
0
private List<KeyValuePair<String,String>> formData = new List<KeyValuePair<String, String>>()
    {
            new KeyValuePair<String, String>("lsd",""),
            new KeyValuePair<String, String>("charset", "")
    };
  1. 为什么[]在构造函数之后?
  2. 集合初始化程序中的项目必须使用逗号分隔:,
于 2013-02-27T10:31:48.063 回答
0

尝试

           private List<KeyValuePair<String, String>> formData = new List<KeyValuePair<String, String>>
    {
            new KeyValuePair<String, String>("lsd",""),
            new KeyValuePair<String, String>("charset", "")
    };
于 2013-02-27T10:32:11.370 回答