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

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


บทนำ

เมธอด 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>