บทนำ
เมธอด Decimal.GetHashCode() ใน C# ใช้คืนค่ารหัสแฮช (hash code) สำหรับอินสแตนซ์ Decimal ปัจจุบัน รหัสแฮชเป็นจำนวนเต็ม 32 บิตที่มีเครื่องหมาย (int)
ไวยากรณ์ (Syntax)
public override int GetHashCode ();
ตัวอย่างที่ 1: รหัสแฮชของค่า Decimal ทั่วไป
using System;
public class Demo
{
public static void Main()
{
Decimal val = 135269.38193m;
Console.WriteLine("Decimal Value = {0}", val);
Console.WriteLine("HashCode = {0}", val.GetHashCode());
}
}
ผลลัพธ์
Decimal Value = 135269.38193 HashCode = 1328665595
ตัวอย่างที่ 2: รหัสแฮชของ Decimal.MaxValue
using System;
public class Demo
{
public static void Main()
{
Decimal val = Decimal.MaxValue;
Console.WriteLine("Decimal Value = {0}", val);
Console.WriteLine("HashCode = {0}", val.GetHashCode());
}
}
ผลลัพธ์
Decimal Value = 79228162514264337593543950335 HashCode = 1173356544
สรุป
รหัสแฮชของ Decimal คำนวณจากค่าตัวเลข รวมถึงเครื่องหมายและตำแหน่งจุดทศนิยม ค่า Decimal ที่เท่ากันจะมีรหัสแฮชเท่ากันเสมอ ทำให้ Decimal ใช้งานได้ดีใน Dictionary<decimal, T> และ HashSet<decimal> แต่ควรระวังการเปรียบเทียบค่าทศนิยมที่คำนวณมา เพราะอาจมีความแตกต่างเล็กน้อยจากการปัดเศษ