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

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などのコレクションでのキー管理に役立ちます。ただし、ハッシュコードが同じでも値が等しいとは限らない点には注意が必要です。

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

    C#のUInt64.GetHashCode()メソッドは、現在のUInt64(符号なし64ビット整数)インスタンスに対応するハッシュコードを取得するために使用されます。ハッシュコードは、ハッシュテーブルやディクショナリなどのデータ構造において、オブジェクトを効率的に検索・管理するために利用されるint型の数値です。構文UInt64.GetHashCode()メソッドの構文は以下のとおりです。public override int GetHashCode ();このメソッドは引数を受け取らず、呼び出し元のUInt64インスタンスのハッシュコードをint型の値として返します。使用例1:基本的な使い

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

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