C#のSingle.GetHashCode()メソッドをサンプルコードで解説
C#におけるSingle.GetHashCode()メソッドは、float型(単精度浮動小数点数)のインスタンスに対応するハッシュコードを返します。ハッシュコードは、ハッシュテーブルなどのデータ構造でオブジェクトを効率的に管理・検索するために利用される32ビットの整数値です。
構文
このメソッドの構文は以下の通りです。
public override int GetHashCode();
引数は不要で、呼び出し元のインスタンスが持つ値から算出されたint型のハッシュコードを返します。
使用例1
まず、基本的な使い方を見てみましょう。
using System;
public class Demo {
public static void Main() {
float f1 = 40.2f;
object f2 = 50.5f;
Console.WriteLine("Value1 = " + f1);
Console.WriteLine("HashCode of Value1 = " + f1.GetHashCode());
Console.WriteLine("Value2 = " + f2);
Console.WriteLine("HashCode of Value2 = " + f2.GetHashCode());
Console.WriteLine("Are both the values equal? = " + f1.Equals(f2));
}
}出力結果1
上記のコードを実行すると、次のような出力が得られます。
Value1 = 40.2 HashCode of Value1 = 1109445837 Value2 = 50.5 HashCode of Value2 = 1112145920 Are both the values equal? = False
この例では、float型の変数とobject型の変数に対してそれぞれGetHashCode()を呼び出しています。異なる値に対して異なるハッシュコードが生成されていること、またEquals()による等価比較の結果がFalseになっていることが確認できます。
使用例2
続いて、別の例を見てみましょう。今度はCompareTo()メソッドとの組み合わせです。
using System;
public class Demo {
public static void Main() {
float f1 = 15.3f;
float f2 = 35.9f;
Console.WriteLine("Value1 = " + f1);
Console.WriteLine("Hashcode for Value1 = " + f1.GetHashCode());
Console.WriteLine("Value2 = " + f2);
Console.WriteLine("Hashcode for Value2 = " + f2.GetHashCode());
Console.WriteLine("Is f1 and f2 equal? = " + f1.CompareTo(f2));
}
}出力結果2
上記のコードを実行すると、次のような出力が得られます。
Value1 = 15.3 Hashcode for Value1 = 1098173645 Value2 = 35.9 Hashcode for Value2 = 1108318618 Is f1 and f2 equal? = -1
ここでは、15.3と35.9という2つの異なるfloat値に対するハッシュコードを取得しています。それぞれ別のハッシュコードが返される一方、CompareTo()の結果は「-1」となり、f1がf2より小さいことを示しています。
まとめ
Single.GetHashCode()メソッドを使うことで、float型の値から一意性の高い整数値(ハッシュコード)を簡単に取得できます。同じ値からは常に同じハッシュコードが生成されるため、DictionaryやHashSetなどのコレクションでのキー管理に役立ちます。ただし、ハッシュコードが同じでも値が等しいとは限らない点には注意が必要です。
-
C#のUInt64.GetHashCode()メソッドとは?構文と使い方をサンプルコード付きで解説
C#のUInt64.GetHashCode()メソッドは、現在のUInt64(符号なし64ビット整数)インスタンスに対応するハッシュコードを取得するために使用されます。ハッシュコードは、ハッシュテーブルやディクショナリなどのデータ構造において、オブジェクトを効率的に検索・管理するために利用されるint型の数値です。構文UInt64.GetHashCode()メソッドの構文は以下のとおりです。public override int GetHashCode ();このメソッドは引数を受け取らず、呼び出し元のUInt64インスタンスのハッシュコードをint型の値として返します。使用例1:基本的な使い
-
【C#入門】UInt16.GetHashCode()メソッドの使い方を実例付きで解説
C#のUInt16.GetHashCode()メソッドは、現在のUInt16インスタンスに対応するハッシュコード(HashCode)を取得するために使用されます。ハッシュコードは、ハッシュテーブルなどのデータ構造でオブジェクトを効率的に管理・検索する際に活用される整数値です。構文UInt16.GetHashCode()メソッドの構文は以下の通りです。public override int GetHashCode ();このメソッドは引数を受け取らず、現在のインスタンスの値を表すint型のハッシュコードを返します。使用例1まず、基本的な実装例を見てみましょう。通常の値とUInt16.MinVal