บทนำ
เมธอด Int64.GetHashCode() ใน C# ใช้สำหรับคืนค่ารหัสแฮช (hash code) สำหรับอินสแตนซ์ของ Int64 ณ ปัจจุบัน รหัสแฮชเป็นจำนวนเต็ม 32 บิตที่มีเครื่องหมาย (int)
ไวยากรณ์ (Syntax)
public override int GetHashCode ();
ตัวอย่างที่ 1: การเปรียบเทียบรหัสแฮชของค่าต่างกัน
using System;
public class Demo
{
public static void Main()
{
long val1 = 8768768768;
long val2 = 7889765555;
Console.WriteLine("Value1 = " + val1);
Console.WriteLine("Value2 = " + val2);
Console.WriteLine("Are they equal? = " + val1.Equals(val2));
Console.WriteLine("Value1 (HashCode) = " + val1.GetHashCode());
Console.WriteLine("Value2 (HashCode) = " + val2.GetHashCode());
}
}
ผลลัพธ์
Value1 = 8768768768 Value2 = 7889765555 Are they equal? = False Value1 (HashCode) = 178834178 Value2 (HashCode) = -700169038
ตัวอย่างที่ 2: ค่าต่ำสุดและค่าสูงสุดของ Int64
using System;
public class Demo
{
public static void Main()
{
long val1 = 0;
long val2 = Int64.MaxValue;
Console.WriteLine("Value1 = " + val1);
Console.WriteLine("Value2 = " + val2);
Console.WriteLine("Are they equal? = " + val1.Equals(val2));
Console.WriteLine("Value1 (HashCode) = " + val1.GetHashCode());
Console.WriteLine("Value2 (HashCode) = " + val2.GetHashCode());
}
}
ผลลัพธ์
Value1 = 0 Value2 = 9223372036854775807 Are they equal? = False Value1 (HashCode) = 0 Value2 (HashCode) = -2147483648
สรุป
เมธอด GetHashCode() สำคัญสำหรับการใช้งานในโครงสร้างข้อมูลแบบแฮช เช่น Dictionary หรือ HashSet รหัสแฮชของ Int64 คำนวณจากค่าของตัวเลขเอง ดังนั้นค่าเท่ากันจะมีรหัสแฮชเท่ากันเสมอ