📜  c# 获取哈希码 - C# (1)

📅  最后修改于: 2023-12-03 15:13:52.486000             🧑  作者: Mango

C# 获取哈希码

在C#中,可以通过使用哈希算法来获取一个对象的哈希码。哈希码是对象的一个整数值,用于支持基于哈希表的数据结构(如Dictionary)。

下面是C#中获取哈希码的几种方法:

1. GetHashCode()方法

在C#中,每个对象都有一个GetHashCode()方法,可以用于获取其哈希码。默认情况下,GetHashCode()方法返回的是对象的内存地址的哈希码。但是,可以通过重写该方法来返回不同的哈希码。

下面是一个示例,演示如何重写GetHashCode()方法来返回一个字符串的哈希码:

public override int GetHashCode()
{
    unchecked // 不溢出
    {
        int hash = 17;
        hash = hash * 23 + str1.GetHashCode();
        hash = hash * 23 + str2.GetHashCode();
        return hash;
    }
}
2. HashCode类

在C# 9.0中,引入了一个新的HashCode类,用于简化获取哈希码的过程。该类提供了若干个静态方法,可以用于计算多个值的哈希码。

下面是一个示例,演示如何使用HashCode类来计算两个字符串的哈希码:

var str1 = "hello";
var str2 = "world";
var hashCode = HashCode.Combine(str1, str2);
3. SHA1哈希算法

除了上述方法外,还可以使用SHA1哈希算法来获取字符串的哈希码。SHA1哈希算法是一种加密算法,可以将任意长度的消息转换成一个160位的哈希值。

下面是一个示例,演示如何使用SHA1哈希算法来获取字符串的哈希码:

using System.Security.Cryptography;

var str = "hello world";
var sha1 = SHA1.Create();
var bytes = Encoding.UTF8.GetBytes(str);
var hash = sha1.ComputeHash(bytes);
var hashCode = BitConverter.ToInt32(hash, 0);

以上是C#中获取哈希码的几种方法,开发者可以根据具体需求进行选择。