阅读量:0
要实现C#中Hashtable的自定义键类型,首先需要创建一个自定义的类作为键类型,然后重写该类的Equals和GetHashCode方法。这样可以确保Hashtable在查找键值对时能够正确比较自定义键类型的实例。
下面是一个示例代码,演示了如何实现自定义键类型的Hashtable:
using System; using System.Collections; // 自定义键类型 public class CustomKey { public int Id { get; set; } public string Name { get; set; } public override bool Equals(object obj) { if (obj == null || GetType() != obj.GetType()) { return false; } CustomKey other = (CustomKey)obj; return Id == other.Id && Name == other.Name; } public override int GetHashCode() { return Id.GetHashCode() ^ Name.GetHashCode(); } } class Program { static void Main() { Hashtable hashtable = new Hashtable(); CustomKey key1 = new CustomKey { Id = 1, Name = "Key1" }; CustomKey key2 = new CustomKey { Id = 2, Name = "Key2" }; hashtable[key1] = "Value1"; hashtable[key2] = "Value2"; Console.WriteLine(hashtable[key1]); // 输出 "Value1" Console.WriteLine(hashtable[key2]); // 输出 "Value2" } }
在上面的示例中,我们创建了一个名为CustomKey的自定义键类型,其中包含Id和Name属性。然后重写了Equals和GetHashCode方法,以确保键值对在Hashtable中的正确比较。
在Main方法中,我们创建了一个Hashtable实例,并用自定义键类型作为键,将值存储在Hashtable中。最后,我们通过自定义键类型来获取值,并输出结果。