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ビット整数であるため、このような変換が行われる点に注意してください。
-
iOSアプリのバージョン番号とビルド番号をコードで取得する方法
iOSアプリを開発する際、デフォルトではバージョンが「1.0」、ビルドが「0」として設定されています。App Storeに新しいビルドをアップロードするたびに、このバージョン番号を更新する必要があります。また、テスト用のビルドを作成する際には、ビルド番号だけを更新することもできます。これらのバージョン情報とビルド情報は、プロジェクト内の「Info.plist」ファイルに保存されており、Xcodeのターゲット設定画面から確認・編集することが可能です。バージョン番号やビルド番号が必要になるケースアプリ開発では、以下のような場面でプログラムからバージョンやビルド番号を取得したくなることがあります。新
-
C#で現在のインスタンスの型を取得する方法(GetTypeメソッド)
C#でオブジェクトの現在のインスタンスの型(実行時の型)を取得するには、GetType()メソッドを使用します。このメソッドはすべての型の基底クラスであるSystem.Objectに定義されており、呼び出し元インスタンスの正確な型をSystem.Typeオブジェクトとして返します。 GetType()メソッドの基本 GetType()はインスタンスに対して呼び出すことで、その実行時の型情報を取得できます。戻り値であるTypeオブジェクトをそのまま文字列連結して出力すると、「System.String」や「System.Int32」のような完全修飾型名が表示されます。 例1:string型のイン