初始化KeyValuePair数组

时间:2010-11-18 07:49:48

标签: c# arrays

这似乎是一件很简单的事情,但我似乎无法找出正确的语法。我目前有这个:

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string,string>[];

但是,这似乎有效:

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string,string>[10];

但我最初不知道数组的大小。我知道我可以使用一系列KVP,我可能会,但我只是想知道如何实现这一点。

4 个答案:

答案 0 :(得分:11)

不,你不能这样做 - 因为数组总是有固定的大小。如果您没有指定该尺寸,您希望使用的尺寸是多少?您 必须指定大小本身内容(允许推断大小)。例如:

int[] x = new int[10]; // Explicit size
int[] y = new int[] { 1, 2, 3, 4, 5 }; // Implicit size
int[] z = { 1, 2, 3, 4, 5 }; // Implicit size and type

List<T>绝对是您收藏的朋友,你不知道它的大小。

答案 1 :(得分:7)

为什么不使用

List<KeyValuePair<string, string>>

查看List Class

答案 2 :(得分:7)

根据定义,数组是固定大小的。您可以在第二个代码示例中指定大小,也可以从初始化中推断出它:

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string, string>[]
{
    new KeyValuePair<string, string>(...),
    new KeyValuePair<string, string>(...),
    ...
}

如果你想要一个可变长度的结构,我建议你使用List<T>

有关数组的更多信息,请参阅C# programming guide

答案 3 :(得分:1)

这个怎么样?

var kvpArr = new List<KeyValuePair<string,string>>();