温馨提示×

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

c#
小樊
84
2024-08-19 03:49:37
栏目: 编程语言

要实现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中。最后,我们通过自定义键类型来获取值,并输出结果。

0