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

C#のDouble.Equals()メソッドとは?使い方をサンプルコード付きで解説

C#のDouble.Equals()メソッドは、2つのDoubleインスタンスが同じ値を表しているかどうかを判定し、その結果をbool型で返すメソッドです。値が等しければtrue、異なっていればfalseが返ります。

構文

Double.Equals()メソッドには、以下の2つのオーバーロードが用意されています。

public bool Equals (double obj);
public override bool Equals (object ob);

1つ目の構文のobjパラメータは、このインスタンスと比較するDoubleオブジェクトを指定します。一方、2つ目の構文のobjパラメータは、このインスタンスと比較する任意のオブジェクトを指定します。

2つのオーバーロードの違い

Equals(double)は比較対象が明確にdouble型であるため高速に動作します。一方、Equals(object)では引数がDouble型かどうかの判定が行われ、Double以外の型が渡された場合、たとえ数値が同じでもfalseが返される点に注意が必要です。

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

まずは、double型の値同士を比較する基本的な例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      double d1 = 150d;
      double d2 = 150d;
      Console.WriteLine("Double1 Value = "+d1);
      Console.WriteLine("Double2 Value = "+d2);
      Console.WriteLine("Are both the double values equal? = "+d1.Equals(d2));
   }
}

出力結果

Double1 Value = 150
Double2 Value = 150
Are both the double values equal? = True

この例では、変数d1d2はどちらも150という同じ値を持っているため、Equals()メソッドはTrueを返します。

使用例2:object型との比較

次に、object型の値と比較した場合の動作を確認してみましょう。

using System;
public class Demo {
   public static void Main() {
      double d1 = 150d;
      object ob1 = 1/2;
      Console.WriteLine("Double1 Value = "+d1);
      Console.WriteLine("Object Value = "+ob1);
      Console.WriteLine("Are both the values equal? = "+d1.Equals(ob1));
   }
}

出力結果

Double1 Value = 150
Object Value = 0
Are both the values equal? = False

この例では、ob1には整数同士の除算「1/2」の結果である0が格納されています。d1(150)とob1(0)の値が異なるため、Equals()メソッドはFalseを返します。

注意点

Equals(object)を使用する場合、引数がボックス化されたdouble(Double型)でないと、値が同じであってもfalseが返されます。また、C#では整数同士の除算は小数点以下が切り捨てられるため、「1/2」は0になることにも留意してください。意図した比較を行うためには、型と値の両方を意識することが重要です。

  1. C#のUInt16.Equalsメソッドとは?使い方をサンプルコード付きで解説

    C#のUInt16.Equals()メソッドは、現在のインスタンスが指定したオブジェクトまたはUInt16(16ビット符号なし整数)の値と等しいかどうかを示すbool値を返すメソッドです。構文UInt16.Equals()メソッドには、以下の2種類の構文があります。public override bool Equals (object ob); public bool Equals (ushort ob);1つ目の構文のパラメータobは、このインスタンスと比較する対象のオブジェクトです。2つ目の構文のパラメータobは、このインスタンスと比較する16ビット符号なし整数(ushort)です。戻り値

  2. C#のUInt16.CompareTo()メソッドの使い方をサンプルコード付きで解説

    C#のUInt16.CompareTo()メソッドは、現在のインスタンスと指定されたオブジェクトまたはUInt16値を比較し、両者の相対的な大小関係を示す整数値を返します。数値の大小判定やソート処理などで活用できる便利なメソッドです。 構文 UInt16.CompareTo()メソッドの構文は以下の2種類があります。 public int CompareTo (object val); public int CompareTo (ushort val); 1つ目の構文では、比較対象として任意のオブジェクトを引数に指定します。2つ目の構文では、比較対象として符号なし整数(ushort)を直接指定