C#のDouble.GetHashCode()メソッドとは?使い方とサンプルコードを解説
C#におけるDouble.GetHashCode()メソッドは、そのdouble型インスタンスに対応するハッシュコード(int型)を返すためのメソッドです。ハッシュコードは、DictionaryやHashSetなどのハッシュベースのコレクションでオブジェクトを効率的に管理するために利用されます。
構文
Double.GetHashCode()メソッドの構文は以下の通りです。
public override int GetHashCode();
引数は不要で、呼び出し元のdouble値から計算された32ビット整数のハッシュコードが返されます。
サンプルコード1
まずは基本的な使用例を見てみましょう。
using System;
public class Demo {
public static void Main(){
double d1 = 150d;
object ob1 = 1/2;
Console.WriteLine("Double1 Value = "+d1);
Console.WriteLine("Object Value = "+ob1);
Console.WriteLine("Are both the values equal? = "+d1.Equals(ob1));
Console.WriteLine("HashCode of Double1 Value = {0}",
d1.GetHashCode());
}
}実行結果
上記のコードを実行すると、次の出力が得られます。
Double1 Value = 150 Object Value = 0 Are both the values equal? = False HashCode of Double1 Value = 1080213504
この例では、double型の値150とobject型の値0を比較しています。両者は等しくない(False)ため、それぞれ異なるハッシュコードが生成される点にも注目してください。
サンプルコード2
続いて、もう一つ簡単な例を確認します。
using System;
public class Demo {
public static void Main(){
double d = 10d;
Console.WriteLine("Double Value = "+d);
Console.WriteLine("HashCode of Double Value = {0}",
d.GetHashCode());
}
}実行結果
このコードを実行すると、以下のような出力になります。
Double Value = 10 HashCode of Double Value = 1076101120
ポイントまとめ
- GetHashCode()メソッドは、double値ごとに一貫したハッシュコードを返します。
- 同じ値に対しては常に同じハッシュコードが返されますが、異なる値が必ずしも異なるハッシュコードになるとは限りません。
- ハッシュコードは等価性の判定そのものではなく、あくまで高速な検索・格納のための補助的な値として使うのが正しい用法です。
-
C#のType.GetHashCode()メソッドの使い方とサンプルコード解説
C#のType.GetHashCode()メソッドは、現在のTypeインスタンスに対応するハッシュコードを返します。ハッシュコードは、DictionaryやHashSetといったハッシュベースのコレクションでオブジェクトを効率的に管理・検索するために利用される整数値です。構文Type.GetHashCode()メソッドの構文は以下の通りです。public override int GetHashCode ();引数は不要で、戻り値として現在のインスタンスのハッシュコードを表すint型の値が返されます。サンプル1:配列の型からハッシュコードを取得するまず、文字列配列のTypeオブジェクトに対して
-
C#のCharEnumerator.GetHashCode()メソッドの使い方を解説
C#におけるCharEnumerator.GetHashCode()メソッドは、現在のオブジェクトのハッシュコードを返します。ハッシュコードは、オブジェクトを識別するための整数値であり、ハッシュテーブルなどのデータ構造で効率的な検索を行う際に利用されます。構文public virtual int GetHashCode ();このメソッドは引数を受け取らず、現在のオブジェクトを表すint型のハッシュコードを返します。CharEnumeratorクラスでは、Objectクラスから継承されたこのメソッドが仮想メソッドとして定義されています。それでは、CharEnumerator.GetHashCo