在C#中,byte數(shù)組可以作為哈希鍵,只要符合哈希鍵的要求。哈希鍵必須是不可變的,并且需要實(shí)現(xiàn)GetHashCode()和Equals()方法。在使用byte數(shù)組作為哈希鍵時,可以自定義一個類來包裝byte數(shù)組,并實(shí)現(xiàn)這些方法。例如:
public class ByteArrayKey
{
private byte[] key;
public ByteArrayKey(byte[] key)
{
this.key = key;
}
public override int GetHashCode()
{
unchecked
{
int hash = 17;
foreach (byte b in key)
{
hash = hash * 31 + b.GetHashCode();
}
return hash;
}
}
public override bool Equals(object obj)
{
if (obj is ByteArrayKey other)
{
return key.SequenceEqual(other.key);
}
return false;
}
}
然后可以使用這個ByteArrayKey類作為哈希鍵,例如:
var dictionary = new Dictionary<ByteArrayKey, string>();
byte[] key1 = new byte[] { 0x01, 0x02, 0x03 };
byte[] key2 = new byte[] { 0x04, 0x05, 0x06 };
dictionary[new ByteArrayKey(key1)] = "Value1";
dictionary[new ByteArrayKey(key2)] = "Value2";
Console.WriteLine(dictionary[new ByteArrayKey(key1)]); // Output: Value1
Console.WriteLine(dictionary[new ByteArrayKey(key2)]); // Output: Value2
這樣就可以使用byte數(shù)組作為哈希鍵了。