📅  最后修改于: 2023-12-03 15:30:17.664000             🧑  作者: Mango
哈希码(HashCode)是将任何长度的数据映射为固定长度值的算法,常用于具有高性能的散列函数,如散列表(hash table)、哈希映射(hash map)等。
在C#中,String
类已经提供了获取字符串的哈希码的方法,通过调用GetHashCode()
方法即可获取。
string str = "Hello, world!";
int hashCode = str.GetHashCode();
Console.WriteLine(hashCode);
输出:
-1098027246
GetHashCode()
方法返回的哈希码是一个整型值(int
),其范围是在 -2147483648 到 2147483647 之间。如果需要自定义哈希码的计算方式,可以重写GetHashCode()
方法。在重写时,需要保证两个对象的GetHashCode()
方法返回值相等时,它们的Equals()
方法比较也相等。
下面是一个自定义哈希码计算方式的示例:
class Person
{
public int Id { get; set; }
public string Name { get; set; }
public override int GetHashCode()
{
unchecked
{
int hash = 17;
hash = hash * 23 + Id.GetHashCode();
hash = hash * 23 + Name.GetHashCode();
return hash;
}
}
public override bool Equals(object obj)
{
if (obj is Person)
{
Person p = (Person)obj;
return Id == p.Id && Name == p.Name;
}
return false;
}
}
在上述代码中,Person
类重写了GetHashCode()
方法和Equals()
方法,实现了自定义哈希码的计算方式。
哈希码是计算机科学中一个重要的概念,可以用于高效地存储和查找数据。在C#中,String
类已经提供了获取字符串的哈希码的方法,同时也可以自定义哈希码计算方式,以满足不同的需求。