代码之家  ›  专栏  ›  技术社区  ›  Paul Michaels

初始化KeyValuePair数组

  •  7
  • Paul Michaels  · 技术社区  · 15 年前

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

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

    然而,这似乎是可行的:

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

    但我一开始不知道数组的大小。我知道我可以使用一个kvp列表,我可能会使用,但我只想知道如何/是否真的可以做到这一点。

    4 回复  |  直到 15 年前
        1
  •  11
  •   Jon Skeet    15 年前

    不,你不能这样做-因为数组总是有固定的大小。如果不指定起始大小,您希望使用什么大小?你 任何一个 必须指定大小本身 内容(允许推断大小)。例如:

    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> 绝对是你的朋友收藏,你不知道大小开始。

        2
  •  9
  •   Anders Fjeldstad    15 年前

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

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

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

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

        3
  •  7
  •   Adriaan Stander    15 年前

    为什么不使用

    List<KeyValuePair<string, string>>
    

    看一看 List Class

        4
  •  1
  •   cdhowie    15 年前

    这个怎么样?

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