这里以Dictionary<string,string>为例
当我们实例化Dictionary<string,string>集合时,其中有一个重载构造方法如下:
// // 摘要: // 初始化 System.Collections.Generic.Dictionary`2 类的新实例,该实例为空,具有默认的初始容量并使用指定的 System.Collections.Generic.IEqualityComparer`1。 // // 参数: // comparer: // 比较键时要使用的 System.Collections.Generic.IEqualityComparer`1 实现,或者为 null,以便为键类型使用默认的 // System.Collections.Generic.EqualityComparer`1。 public Dictionary(IEqualityComparercomparer);
这里需要传入一个比较器,并且该比较器需要实现IEqualityComparer<TKey>接口
public class MyDictionaryComparer : IEqualityComparer{ public bool Equals(string x, string y) { //throw new NotImplementedException(); return x != y; } public int GetHashCode(string obj) { //throw new NotImplementedException(); return obj.GetHashCode(); } }
那么我们现在就可以使用Dictionary<string,string>字典集合存放键重复的内容了
Dictionarydict = new Dictionary (new MyDictionaryComparer()); dict.Add("name", "zhangsan"); dict.Add("age", "18"); dict.Add("name", "lisi");