允许相同密钥的通用集合

HashTableDictionary这样的集合不允许使用相同的键添加值,但我想在Collection使用相同的键存储相同的值。

是否有内置的集合让我这样做?

您可以使用包含自定义类的List ,甚至可以使用List>

 List> values = new List>(); values.Add(Tuple.Create(23, "Foo")); values.Add(Tuple.Create(23, "Bar")); 

或者,您可以创建Dictionary> (或其他一些字符串集合),并以这种方式填充值。

 Dictionary> dict = new Dictionary>(); dict.Add(23, new List { "Foo", "Bar" }); 

这具有仍然通过密钥提供快速查找的优点,同时允许每个密钥具有多个值。 但是,稍后添加值有点棘手。 如果使用这个,我会在方法中封装值的添加,即:

 void Add(int key, string value) { List values; if (!dict.TryGetValue(key, out values)) { values = new List(); dict[key] = values; } values.Add(value); } 

使用带有自定义ClassList

 public class MyClass { public int MyInt { get; set; } public string MyString { get; set; } } List myList = new List(); myList.Add(new MyClass { MyInt = 1, MyString = "string" }); 

简而言之:最简单的方法是在滑动ArrayList类时使用通用的List集合。 因为,您需要考虑一些性能因素

此外,您还可以使用List> 。 这将存储一个可以重复的KeyValuePair列表。

在决定是否使用List or ArrayList类时,两者都具有相似的function,请记住List类在大多数情况下表现更好并且类型安全。 如果引用类型用于List类的类型T,则两个类的行为是相同的。 但是,如果值类型用于类型T,则需要考虑实现和装箱问题。

作为参考:您可以使用以下MSDN文章 – 列表类 。