如何实现C#中Hashtable的自定义键类型

avatar
作者
猴君
阅读量: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中。最后,我们通过自定义键类型来获取值,并输出结果。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!