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

C#のUInt32構造体とは?CompareTo・Equalsメソッドの使い方を実例付きで解説

UInt32構造体は、C#における32ビット符号なし整数(unsigned integer)を表す値型です。扱える値の範囲は 0 ~ 4,294,967,295 となっており、負の値を持たない整数データを効率的に処理したい場合に活用されます。

この記事では、UInt32構造体が提供する主要なメソッドである「CompareTo()」と「Equals()」について、構文やサンプルコード、実行結果を交えながら詳しく解説していきます。


UInt32.CompareTo()メソッドとは

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

構文

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

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

戻り値の意味

  • 0:現在のインスタンスが比較対象の値と等しい場合
  • 0より小さい値:現在のインスタンスが比較対象より小さい場合
  • 0より大きい値:現在のインスタンスが比較対象より大きい場合

サンプルコード①(uint型同士の比較)

using System;
public class Demo {
    public static void Main(){
        uint val1 = 25;
        uint val2 = 55;
        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");
    }
}

実行結果

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

この例では、25と55を比較しているため、差分の「-30」が返され、「val1 < val2」と判定されています。

サンプルコード②(object型との比較)

using System;
public class Demo {
    public static void Main(){
        uint val1 = 25;
        object val2 = (uint)2;
        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");
    }
}

実行結果

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

オブジェクトにボックス化されたuint型の値を渡した場合も、同様に数値として正しく比較できることがわかります。


UInt32.Equals()メソッドとは

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

構文

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

1つ目の構文の引数obには比較対象のオブジェクトを、2つ目の構文の引数obには比較対象の32ビット符号なし整数を指定します。

サンプルコード①(異なる値の場合)

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

実行結果

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

サンプルコード②(同じ値の場合)

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

実行結果

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

まとめ

UInt32構造体は、0~4,294,967,295の範囲の符号なし整数を扱うための基本的な値型です。大小関係を調べたい場合はCompareTo()メソッド、等しいかどうかを判定したい場合はEquals()メソッドを使い分けることで、数値比較の処理を簡潔に記述できます。用途に応じて適切なメソッドを選択しましょう。

  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言語で各データ型を表すために使用されるフォーマット文字(記法)を理解しておく必要があります。主なものを以下の表にまとめました。 データ型フォーマット文字