C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のDateTimeOffset.GetHashCode()メソッドの使い方を徹底解説


C#のDateTimeOffset.GetHashCode()メソッドは、現在のDateTimeOffsetオブジェクトに対応するハッシュコードを取得するために使用されます。戻り値は、32ビット符号付き整数(int型)のハッシュコードです。ハッシュコードは、ハッシュテーブルなどのデータ構造でオブジェクトを効率的に管理する際に活用されます。

構文

このメソッドの構文は以下のとおりです。

public override int GetHashCode ();

引数は不要で、呼び出すだけで現在のDateTimeOffsetインスタンスのハッシュコードが返されます。

実装例1

まず、2つの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);
      // DateTimeOffset1の方がDateTimeOffset2より早いため、0未満の値が返される
      Console.WriteLine(res);
   }
}

出力結果1

上記のコードを実行すると、次のような出力が得られます。

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

この例では、GetHashCode()メソッドによって各DateTimeOffsetオブジェクト固有のハッシュコードが取得できていることがわかります。また、比較用のCompareメソッドでは、dateTimeOffset1の方がdateTimeOffset2より前の日時であるため、「-1」が返されています。

実装例2

続いて、単一の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);
   }
}

出力結果2

上記のコードを実行すると、次のような出力が得られます。

DateTimeOffset = 11/10/2019 6:20:10 AM -05:00
DateTimeOffset HashCode = -92293937

まとめ

DateTimeOffset.GetHashCode()メソッドを使うことで、日時とUTCオフセットの情報を持つDateTimeOffsetオブジェクトから、一意に近い32ビット整数のハッシュコードを簡単に取得できます。等価性の判定やコレクション内での検索を高速化したい場合に役立つため、ぜひ活用してみてください。

  1. 【C#入門】DateTimeOffset.AddYears()メソッドの使い方を徹底解説

    C#のDateTimeOffset.AddYears()メソッドは、現在のDateTimeOffsetインスタンスが表す日時に、指定した年数を加算した新しいDateTimeOffset値を返すメソッドです。元のインスタンスの値は変更されず、計算結果が新しいオブジェクトとして返される点に注意してください。構文AddYears()メソッドの構文は以下のとおりです。public DateTimeOffset AddYears (int val);引数valには、加算する年数を整数で指定します。負の値を指定すると、年数を減算(過去にさかのぼる)ことができます。主な特徴戻り値は新しいDateTimeOf

  2. C#のCharEnumerator.GetHashCode()メソッドの使い方を解説

    C#におけるCharEnumerator.GetHashCode()メソッドは、現在のオブジェクトのハッシュコードを返します。ハッシュコードは、オブジェクトを識別するための整数値であり、ハッシュテーブルなどのデータ構造で効率的な検索を行う際に利用されます。構文public virtual int GetHashCode ();このメソッドは引数を受け取らず、現在のオブジェクトを表すint型のハッシュコードを返します。CharEnumeratorクラスでは、Objectクラスから継承されたこのメソッドが仮想メソッドとして定義されています。それでは、CharEnumerator.GetHashCo