บทนำ
เมธอด DateTimeOffset.GetHashCode() ใน C# ใช้คืนค่ารหัสแฮช (hash code) สำหรับอินสแตนซ์ DateTimeOffset ปัจจุบัน คืนค่าเป็นจำนวนเต็ม 32 บิตที่มีเครื่องหมาย (int)
ไวยากรณ์ (Syntax)
public override int GetHashCode ();
ตัวอย่างที่ 1: เปรียบเทียบ HashCode ของ DateTimeOffset สองค่า
using System;
public class Demo
{
public static void Main()
{
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 09, 10, 6, 20, 10, new TimeSpan(-5, 0, 0));
DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 11, 12, 8, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
int hash1 = dateTimeOffset1.GetHashCode();
Console.WriteLine("DateTimeOffset1 HashCode = {0}", hash1);
int hash2 = dateTimeOffset2.GetHashCode();
Console.WriteLine("DateTimeOffset2 HashCode = {0}", hash2);
Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
int res = DateTimeOffset.Compare(dateTimeOffset1, dateTimeOffset2);
// returns <0 since DateTimeOffset1 is earlier than DateTimeOffset2
Console.WriteLine(res);
}
}
ผลลัพธ์
DateTimeOffset1 = 9/10/2019 6:20:10 AM -05:00 DateTimeOffset1 HashCode = -543087392 DateTimeOffset2 HashCode = 64112243 DateTimeOffset2 = 11/12/2019 8:20:10 AM -05:00 -1
ตัวอย่างที่ 2: HashCode ของ DateTimeOffset เดียว
using System;
public class Demo
{
public static void Main()
{
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 11, 10, 6, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset1);
int hash = dateTimeOffset1.GetHashCode();
Console.WriteLine("DateTimeOffset HashCode = {0}", hash);
}
}
ผลลัพธ์
DateTimeOffset = 11/10/2019 6:20:10 AM -05:00 DateTimeOffset HashCode = -92293937
สรุป
รหัสแฮชของ DateTimeOffset คำนวณจากค่าเวลา UTC และ offset สอง DateTimeOffset ที่แสดงเวลาเดียวกันแต่ offset ต่างกันจะมี hash code ต่างกัน (เพราะเป็นอินสแตนซ์ที่ต่างกัน) ใช้ใน Dictionary<DateTimeOffset, T> และ HashSet<DateTimeOffset>