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管理など、大きな正の整数値が必要な場面で活用するとよいでしょう。
-
C#で2つの数値を入れ替える(スワップする)方法
C#で2つの数値の値を入れ替える(スワップする)場合、一時的な変数を使わずに、足し算と引き算を組み合わせたロジックで実現できます。ここでは、その基本的な考え方と実際のコード例を紹介します。 入れ替えの基本的なロジック まず、入れ替える対象となる2つの変数を用意します。 val1 = 100; val2 = 200; 次に、以下の3つの演算を行うことで、変数の値を入れ替えることができます。 val1 = val1 + val2; val2 = val1 - val2; val1 = val1 - val2; 仕組みの解説 このロジックがどのように機能するのか、順を追って確認してみましょう。
-
Pythonのstructモジュール入門:データ型とバイト列の相互変換
このチュートリアルでは、Pythonのstructモジュールについて詳しく解説します。それでは早速見ていきましょう。 structモジュールは、Pythonのネイティブなデータ型をバイト列(bytes)に変換したり、その逆の変換を行ったりするために使用されるモジュールです。標準ライブラリに含まれる組み込みモジュールのため、追加のインストールは一切不要です。 structモジュールはC言語と密接な関係があります。このモジュールを扱うには、C言語で各データ型を表すために使用されるフォーマット文字(記法)を理解しておく必要があります。主なものを以下の表にまとめました。 データ型フォーマット文字