Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด Int64.GetHashCode ใน C# พร้อมตัวอย่าง


บทนำ

เมธอด 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 คำนวณจากค่าของตัวเลขเอง ดังนั้นค่าเท่ากันจะมีรหัสแฮชเท่ากันเสมอ