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

C#でInt64インスタンスのハッシュコードを取得する方法

C#の Int64.GetHashCode() メソッドを使うと、現在のInt64(long型)インスタンスに対応するハッシュコードを取得できます。このメソッドは、ハッシュテーブルなどのデータ構造で値を効率的に管理する際に利用されます。

GetHashCode()メソッドの基本

GetHashCode()は、オブジェクトの値をもとに計算された32ビット整数のハッシュコードを返します。同じ値を持つInt64インスタンスは必ず同じハッシュコードを返しますが、異なる値が同じハッシュコードになる場合もあります(ハッシュの衝突)。

サンプルコード1

以下の例では、2つのlong型の値に対してハッシュコードを取得しています。

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

実行結果

Value1 = 8768768768
Value2 = 7889765555
Are they equal? = False
Value1 (HashCode) = 178834178
Value2 (HashCode) = -700169038

この例では、val1とval2は異なる値のため Equals() の比較結果は False となり、それぞれ異なるハッシュコードが返されています。

サンプルコード2

次に、0 と Int64.MaxValue を使った例を見てみましょう。

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

実行結果

Value1 = 0
Value2 = 9223372036854775807
Are they equal? = False
Value1 (HashCode) = 0
Value2 (HashCode) = -2147483648

このように、値が0の場合はハッシュコードも0になり、Int64.MaxValue(9223372036854775807)の場合は int 型の範囲に収まるよう変換された値が返されます。Int64は64ビットですが、ハッシュコードは32ビット整数であるため、このような変換が行われる点に注意してください。

  1. iOSアプリのバージョン番号とビルド番号をコードで取得する方法

    iOSアプリを開発する際、デフォルトではバージョンが「1.0」、ビルドが「0」として設定されています。App Storeに新しいビルドをアップロードするたびに、このバージョン番号を更新する必要があります。また、テスト用のビルドを作成する際には、ビルド番号だけを更新することもできます。これらのバージョン情報とビルド情報は、プロジェクト内の「Info.plist」ファイルに保存されており、Xcodeのターゲット設定画面から確認・編集することが可能です。バージョン番号やビルド番号が必要になるケースアプリ開発では、以下のような場面でプログラムからバージョンやビルド番号を取得したくなることがあります。新

  2. C#で現在のインスタンスの型を取得する方法(GetTypeメソッド)

    C#でオブジェクトの現在のインスタンスの型(実行時の型)を取得するには、GetType()メソッドを使用します。このメソッドはすべての型の基底クラスであるSystem.Objectに定義されており、呼び出し元インスタンスの正確な型をSystem.Typeオブジェクトとして返します。 GetType()メソッドの基本 GetType()はインスタンスに対して呼び出すことで、その実行時の型情報を取得できます。戻り値であるTypeオブジェクトをそのまま文字列連結して出力すると、「System.String」や「System.Int32」のような完全修飾型名が表示されます。 例1:string型のイン