初始化一个KeyValuePair数组

10

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

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

不过,这似乎有效:

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

但我不知道数组最初的大小。我知道我可以使用KVP列表,我可能会这样做,但我只是想知道如何/是否可以实现这个目标。


3
你为什么不使用“字典”呢?还是说这是关于数组初始化的理论问题? - Bobby
1
这是一个理论问题 - 但我也会有重复的条目。 - Paul Michaels
如果您需要查找功能并且需要处理每个键的多个值,则可以考虑使用System.Linq.Lookup<T>类。但它是不可变的。更多信息:http://msdn.microsoft.com/en-us/library/bb460184.aspx - Anders Fjeldstad
4个回答

14

数组的大小是固定的。你可以像第二个代码示例中那样指定大小,或者你可以从初始化中推断出它的大小:

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string, string>[]
{
    new KeyValuePair<string, string>(...),
    new KeyValuePair<string, string>(...),
    ...
}
如果你需要一个长度可变的结构,我建议你使用 List<T> 。 有关数组的更多信息,请参阅C#编程指南

你漏了一个分号 :) - 8bitcartridge

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> 绝对是你处理集合时不知道初始大小的好帮手。


7
为什么不使用?
List<KeyValuePair<string, string>>

请看List 类

2
这个怎么样?
var kvpArr = new List<KeyValuePair<string,string>>();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接