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

C#のUInt64構造体とは?主なメソッドと使い方を解説

UInt64構造体は、C#における64ビット符号なし整数を表す値型です。扱える値の範囲は、0から18,446,744,073,709,551,615(約1,844京)までとなっています。負の値を扱えない代わりに、Int64型よりも広い正の数値範囲を表現できるのが特徴です。

この記事では、UInt64構造体が提供する主要なメソッドである「CompareTo()」と「Equals()」について、具体的なコード例とともに詳しく解説します。

UInt64.CompareTo()メソッド

UInt64.CompareTo()メソッドは、現在のインスタンスを指定されたオブジェクトまたは別のUInt64値と比較し、両者の相対的な大小関係を示す整数値を返します。

構文

public int CompareTo (object val);
public int CompareTo (ulong val);

1つ目の構文では、比較対象としてオブジェクトを指定します。2つ目の構文では、比較対象として64ビット符号なし整数(ulong)を指定します。

戻り値は以下のように判定されます。

  • 現在のインスタンスが引数の値と等しい場合:0
  • 現在のインスタンスが引数の値より小さい場合:0未満の値
  • 現在のインスタンスが引数の値より大きい場合:0より大きい値

使用例1:ulong型同士の比較

まず、ulong型の変数同士をCompareTo()メソッドで比較する例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      ulong val1 = 257876;
      ulong val2 = 5657655;
      int res = val1.CompareTo(val2);
      Console.WriteLine("戻り値(比較結果)= " + res);
      if (res > 0)
         Console.WriteLine("val1 > val2");
      else if (res < 0)
         Console.WriteLine("val1 < val2");
      else
         Console.WriteLine("val1 = val2");
   }
}

出力結果

戻り値(比較結果)= -1
val1 < val2

この例では、val1(257876)がval2(5657655)よりも小さいため、CompareTo()メソッドは-1を返しています。

使用例2:object型との比較

次に、object型にボックス化された値との比較を行う例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      ulong val1 = 258768768;
      object val2 = (ulong)1765765;
      int res = val1.CompareTo(val2);
      Console.WriteLine("戻り値(比較結果)= " + res);
      if (res > 0)
         Console.WriteLine("val1 > val2");
      else if (res < 0)
         Console.WriteLine("val1 < val2");
      else
         Console.WriteLine("val1 = val2");
   }
}

出力結果

戻り値(比較結果)= 1
val1 > val2

この例では、val1(258768768)がval2(1765765)よりも大きいため、CompareTo()メソッドは1を返しています。

UInt64.Equals()メソッド

UInt64.Equals()メソッドは、現在のインスタンスが指定されたオブジェクトまたは別のUInt64値と等しいかどうかを判定し、その結果をbool型(true/false)で返します。

構文

public override bool Equals (object ob);
public bool Equals (ulong ob);

1つ目の構文では、このインスタンスと比較するオブジェクトを引数obに指定します。2つ目の構文では、このインスタンスと比較する64ビット符号なし整数を引数obに指定します。

使用例1:異なる値の比較

まず、異なる値を持つ2つの変数をEquals()メソッドで比較する例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      ulong val1 = 44565777;
      ulong val2 = 77878787;
      bool res = val1.Equals(val2);
      Console.WriteLine("戻り値(比較結果)= " + res);
      if (res)
         Console.WriteLine("val1 = val2");
      else
         Console.WriteLine("val1 != val2");
   }
}

出力結果

戻り値(比較結果)= False
val1 != val2

val1(44565777)とval2(77878787)は異なる値のため、Equals()メソッドはFalseを返しています。

使用例2:同じ値の比較

次に、同じ値を持つ2つの変数を比較する例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      ulong val1 = 78796878;
      ulong val2 = 78796878;
      bool res = val1.Equals(val2);
      Console.WriteLine("戻り値(比較結果)= " + res);
      if (res)
         Console.WriteLine("val1 = val2");
      else
         Console.WriteLine("val1 != val2");
   }
}

出力結果

戻り値(比較結果)= True
val1 = val2

val1とval2はどちらも78796878という同じ値なので、Equals()メソッドはTrueを返しています。

まとめ

UInt64構造体は、0から18,446,744,073,709,551,615までの範囲の大きな符号なし整数を扱うための型です。CompareTo()メソッドを使えば大小関係の比較ができ、Equals()メソッドを使えば等価性の判定ができます。大量のデータ処理やID管理など、大きな正の整数値が必要な場面で活用するとよいでしょう。

  1. C#で2つの数値を入れ替える(スワップする)方法

    C#で2つの数値の値を入れ替える(スワップする)場合、一時的な変数を使わずに、足し算と引き算を組み合わせたロジックで実現できます。ここでは、その基本的な考え方と実際のコード例を紹介します。 入れ替えの基本的なロジック まず、入れ替える対象となる2つの変数を用意します。 val1 = 100; val2 = 200; 次に、以下の3つの演算を行うことで、変数の値を入れ替えることができます。 val1 = val1 + val2; val2 = val1 - val2; val1 = val1 - val2; 仕組みの解説 このロジックがどのように機能するのか、順を追って確認してみましょう。

  2. Pythonのstructモジュール入門:データ型とバイト列の相互変換

    このチュートリアルでは、Pythonのstructモジュールについて詳しく解説します。それでは早速見ていきましょう。 structモジュールは、Pythonのネイティブなデータ型をバイト列(bytes)に変換したり、その逆の変換を行ったりするために使用されるモジュールです。標準ライブラリに含まれる組み込みモジュールのため、追加のインストールは一切不要です。 structモジュールはC言語と密接な関係があります。このモジュールを扱うには、C言語で各データ型を表すために使用されるフォーマット文字(記法)を理解しておく必要があります。主なものを以下の表にまとめました。 データ型フォーマット文字