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

C#のInt32.GetHashCode()メソッドとは?使い方をサンプルコード付きで解説

C#におけるInt32.GetHashCode()メソッドは、現在のint型インスタンスに対応するハッシュコードを返すメソッドです。ハッシュコードは、HashtableやDictionaryなどのハッシュベースのコレクションでオブジェクトを効率的に検索・管理するために利用される数値です。

構文

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

public override int GetHashCode();

戻り値

int型の値そのものに対応する32ビット符号付き整数のハッシュコードが返されます。なお、Int32の場合、ハッシュコードは元の値と同じ数値になります。これは、整数値自身がそのまま有効なハッシュコードとして機能するためです。

サンプルコード1

まず、Int32.GetHashCode()メソッドの基本的な使用例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      int val1 = Int32.MinValue;
      int val2 = 300;
      Console.WriteLine("Value1 = " + val1);
      Console.WriteLine("Value2 = " + val2);
      Console.WriteLine("Are they equal? = " + val1.Equals(val2));
      Console.WriteLine("HashCode for Value1 = " + val1.GetHashCode());
      Console.WriteLine("HashCode for Value2 = " + val2.GetHashCode());
   }
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

Value1 = -2147483648
Value2 = 300
Are they equal? = False
HashCode for Value1 = -2147483648
HashCode for Value2 = 300

この例では、val1にint型が取り得る最小値(-2147483648)を設定しています。Equals()による比較結果はFalseとなり、それぞれの値に対するハッシュコードは元の値と同一であることが確認できます。

サンプルコード2

続いて、同じ値を持つ2つの変数を比較する別の例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      int val1 = 50;
      int val2 = 50;
      Console.WriteLine("Value1 = " + val1);
      Console.WriteLine("Value2 = " + val2);
      Console.WriteLine("Are they equal? = " + val1.Equals(val2));
      Console.WriteLine("HashCode for Value1 = " + val1.GetHashCode());
      Console.WriteLine("HashCode for Value2 = " + val2.GetHashCode());
   }
}

実行結果

このプログラムを実行すると、以下の出力が得られます。

Value1 = 50
Value2 = 50
Are they equal? = True
HashCode for Value1 = 50
HashCode for Value2 = 50

両方の変数が同じ値50を持つため、Equals()の比較結果はTrueとなり、GetHashCode()も同じハッシュコード50を返します。等しい値は必ず等しいハッシュコードを持つという規約に従った動作です。

まとめ

Int32.GetHashCode()メソッドは、int型の値に対してその値自身をハッシュコードとして返します。シンプルな仕組みですが、Dictionary<int, T>やHashSet<int>などで整数キーを扱う際の内部処理において重要な役割を果たしています。

  1. C#のInt32.GetTypeCode()メソッドとは?使い方をサンプルコード付きで解説

    はじめにC#のInt32.GetTypeCode()メソッドは、値型Int32(int)に対応するTypeCodeを返すためのメソッドです。変数がどの型分類に属しているかをTypeCode列挙体として確認したい場合に利用できます。構文メソッドの構文は以下の通りです。public TypeCode GetTypeCode ();引数は取らず、戻り値として TypeCode.Int32 を返します。サンプルコード1:基本的な使い方まずは、Int32.GetTypeCode()メソッドの基本的な使用例を見てみましょう。using System; public class Demo { publ

  2. 【C#入門】UInt16.GetHashCode()メソッドの使い方を実例付きで解説

    C#のUInt16.GetHashCode()メソッドは、現在のUInt16インスタンスに対応するハッシュコード(HashCode)を取得するために使用されます。ハッシュコードは、ハッシュテーブルなどのデータ構造でオブジェクトを効率的に管理・検索する際に活用される整数値です。構文UInt16.GetHashCode()メソッドの構文は以下の通りです。public override int GetHashCode ();このメソッドは引数を受け取らず、現在のインスタンスの値を表すint型のハッシュコードを返します。使用例1まず、基本的な実装例を見てみましょう。通常の値とUInt16.MinVal