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>などで整数キーを扱う際の内部処理において重要な役割を果たしています。
-
C#のInt32.GetTypeCode()メソッドとは?使い方をサンプルコード付きで解説
はじめにC#のInt32.GetTypeCode()メソッドは、値型Int32(int)に対応するTypeCodeを返すためのメソッドです。変数がどの型分類に属しているかをTypeCode列挙体として確認したい場合に利用できます。構文メソッドの構文は以下の通りです。public TypeCode GetTypeCode ();引数は取らず、戻り値として TypeCode.Int32 を返します。サンプルコード1:基本的な使い方まずは、Int32.GetTypeCode()メソッドの基本的な使用例を見てみましょう。using System; public class Demo { publ
-
【C#入門】UInt16.GetHashCode()メソッドの使い方を実例付きで解説
C#のUInt16.GetHashCode()メソッドは、現在のUInt16インスタンスに対応するハッシュコード(HashCode)を取得するために使用されます。ハッシュコードは、ハッシュテーブルなどのデータ構造でオブジェクトを効率的に管理・検索する際に活用される整数値です。構文UInt16.GetHashCode()メソッドの構文は以下の通りです。public override int GetHashCode ();このメソッドは引数を受け取らず、現在のインスタンスの値を表すint型のハッシュコードを返します。使用例1まず、基本的な実装例を見てみましょう。通常の値とUInt16.MinVal