初始化KeyValuePair数组

Pau*_*els 8 c# arrays

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

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string,string>[];
Run Code Online (Sandbox Code Playgroud)

但是,这似乎有效:

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string,string>[10];
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 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
Run Code Online (Sandbox Code Playgroud)

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


And*_*tad 9

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

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string, string>[]
{
    new KeyValuePair<string, string>(...),
    new KeyValuePair<string, string>(...),
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

有关数组的更多信息,请参阅C#编程指南.


Adr*_*der 7

为什么不使用

List<KeyValuePair<string, string>>
Run Code Online (Sandbox Code Playgroud)

看看List Class