Complex.Equals Yöntem

Tanım

İki karmaşık sayının eşit olup olmadığını gösteren bir değer döndürür.

Aşırı Yüklemeler

Name Description
Equals(Object)

Geçerli örneğin ve belirtilen nesnenin aynı değere sahip olup olmadığını gösteren bir değer döndürür.

Equals(Complex)

Geçerli örneğin ve belirtilen karmaşık sayının aynı değere sahip olup olmadığını gösteren bir değer döndürür.

Equals(Object)

Kaynak:
Complex.cs
Kaynak:
Complex.cs
Kaynak:
Complex.cs
Kaynak:
Complex.cs
Kaynak:
Complex.cs

Geçerli örneğin ve belirtilen nesnenin aynı değere sahip olup olmadığını gösteren bir değer döndürür.

public:
 override bool Equals(System::Object ^ obj);
public override bool Equals(object obj);
public override bool Equals(object? obj);
override this.Equals : obj -> bool
Public Overrides Function Equals (obj As Object) As Boolean

Parametreler

obj
Object

Karşılaştırma yapılacak nesne.

Döndürülenler

true obj parametresi bir Complex nesneyse veya bir nesneye örtük dönüştürme yapabilen bir Complex türse ve değeri geçerli Complex nesneye eşitse; değilse, false.

Açıklamalar

İki karmaşık sayı, gerçek parçaları eşitse ve sanal bölümleri eşitse eşittir. Equals(Object) yöntemi aşağıdaki ifadeye eşdeğerdir:

return this.Real.Equals(((Complex) value).Real) &&
       this.Imaginary.Equals(((Complex) value).Imaginary);
this.Real.Equals((value :?> Complex).Real)
&& this.Imaginary.Equals((value :?> Complex).Imaginary)
Return Me.Real.Equals(CType(value, Complex).Real) AndAlso 
       Me.Imaginary.Equals(CType(value, Complex).Imaginary)

obj Parametre bir Complex nesne değilse, ancak örtük dönüştürmenin tanımlandığı bir veri türüyse, Equals(Object) yöntem, karşılaştırmayı gerçekleştirmeden önce gerçek bölümü değerine obj eşit olan ve sanal bölümü sıfıra eşit olan bir Complex nesneye dönüştürürobj. Aşağıdaki örnek, karmaşık bir sayı ve çift duyarlıklı kayan nokta değerinin eşit olduğunu bularak bunu gösterir.

double n1 = 16.33;
System.Numerics.Complex c1 =
       new System.Numerics.Complex(16.33, 0);
Console.WriteLine(c1.Equals(n1));               // Returns true.
let n1 = 16.33;
let c1 = System.Numerics.Complex(16.33, 0)
printfn $"{c1.Equals n1}" // Returns true.
Dim n1 As Double = 16.33
Dim c1 As New System.Numerics.Complex(16.33, 0)
Console.WriteLine(c1.Equals(n1))                ' Returns True.

Arayanlara Notlar

Equals(Complex) Yöntemi dikkatli kullanın, çünkü görünüşte eşdeğer olan iki değer, gerçek ve hayali bileşenlerinin farklı duyarlığı nedeniyle eşit olmadığı düşünülebilir. Karşılaştırma gerçekleştirilmeden önce bir'e obj dönüştürülmesi gerekiyorsa sorun vurgulanabilirDouble. Aşağıdaki örnek, gerçek bileşeni bu değere Single eşit gibi görünen karmaşık bir Single sayıyı karşılaştırır. Çıktıda gösterildiği gibi, eşitlik karşılaştırması döndürür False.

using System;
using System.Numerics;

public class Example
{
   public static void Main()
   {
      float n1 = 1.430718e-12f;
      Complex c1 = new Complex(1.430718e-12, 0);
      Console.WriteLine("{0} = {1}: {2}", c1, n1, c1.Equals(n1));
   }
}
// The example displays the following output:
//       (1.430718E-12, 0) = 1.430718E-12: False
open System.Numerics

let n1 = 1.430718e-12f
let c1 = Complex(1.430718e-12, 0);
printfn $"{c1} = {n1}: {c1.Equals n1}"
// The example displays the following output:
//       (1.430718E-12, 0) = 1.430718E-12: False
Imports System.Numerics

Module Example
   Public Sub Main()
      Dim n1 As Single = 1.430718e-12
      Dim c1 As New Complex(1.430718e-12, 0)
      Console.WriteLine("{0} = {1}: {2}", c1, n1, c1.Equals(n1))
   End Sub
End Module
' The example displays the following output:
'       (1.430718E-12, 0) = 1.430718E-12: False

Önerilen tekniklerden biri, eşitlik değerlerini karşılaştırmak yerine iki değer (değerlerin gerçek ve sanal bileşenlerinden birinin .01% gibi) arasındaki kabul edilebilir bir fark marjı tanımlamaktır. İki değer arasındaki farkın mutlak değeri bu kenar boşluğundan küçük veya buna eşitse, farkın büyük olasılıkla duyarlık farkı ve dolayısıyla değerlerin eşit olması muhtemeldir. Aşağıdaki örnek, önceki kod örneğinin eşit olmadığını bulduğu iki değeri karşılaştırmak için bu tekniği kullanır. Artık eşit olduğunu buluyor.

using System.Numerics;

public class Example
{
   public static void Main()
   {
      float n1 = 1.430718e-12f;
      Complex c1 = new Complex(1.430718e-12, 0);
      double difference = .0001;

      // Compare the values
      bool result = (Math.Abs(c1.Real - n1) <= c1.Real * difference) &
                    c1.Imaginary == 0;
      Console.WriteLine("{0} = {1}: {2}", c1, n1, result);
   }
}
// The example displays the following output:
//       (1.430718E-12, 0) = 1.430718E-12: True
open System.Numerics

let n1 = 1.430718e-12f
let c1 = Complex(1.430718e-12, 0);
let difference = 0.0001f;

// Compare the values
let result = (abs (c1.Real - float n1) <= c1.Real * float difference) && c1.Imaginary = 0;
printfn $"{c1} = {n1}: {result}"
// The example displays the following output:
//       (1.430718E-12, 0) = 1.430718E-12: True
Imports System.Numerics

Module Example
   Public Sub Main()
      Dim n1 As Single = 1.430718e-12
      Dim c1 As New Complex(1.430718e-12, 0)
      Dim difference As Double = .0001
      
      ' Compare the values
      Dim result As Boolean = (Math.Abs(c1.Real - n1) <= c1.Real * difference) And
                              c1.Imaginary = 0
      Console.WriteLine("{0} = {1}: {2}", c1, n1, result)       
   End Sub
End Module
' The example displays the following output:
'       (1.430718E-12, 0) = 1.430718E-12: True

Şunlara uygulanır

Equals(Complex)

Kaynak:
Complex.cs
Kaynak:
Complex.cs
Kaynak:
Complex.cs
Kaynak:
Complex.cs
Kaynak:
Complex.cs

Geçerli örneğin ve belirtilen karmaşık sayının aynı değere sahip olup olmadığını gösteren bir değer döndürür.

public:
 virtual bool Equals(System::Numerics::Complex value);
public bool Equals(System.Numerics.Complex value);
override this.Equals : System.Numerics.Complex -> bool
Public Function Equals (value As Complex) As Boolean

Parametreler

value
Complex

Karşılaştıracak karmaşık sayı.

Döndürülenler

true bu karmaşık sayıysa ve value aynı değere sahipse; değilse, false.

Uygulamalar

Açıklamalar

yöntemi, Equals(Complex) yapı için IEquatable<T> uygulamayı sağlarComplex. Parametresini karmaşık bir sayıya dönüştürmesi gerekmediğinden yöntemden Equals(Object) biraz daha iyi performans gösterir.

İki karmaşık sayı, gerçek parçaları eşitse ve sanal bölümleri eşitse eşittir. Equals(Complex) yöntemi aşağıdaki ifadeye eşdeğerdir:

return this.Real.Equals(value) && this.Imaginary.Equals(value);
this.Real.Equals value && this.Imaginary.Equals value
Return Me.Real.Equals(value.Real) AndAlso Me.Imaginary.Equals(value.Imaginary)

Arayanlara Notlar

Equals(Complex) Yöntemi dikkatli kullanın, çünkü görünüşte eşdeğer olan iki değer, gerçek ve hayali bileşenlerinin farklı duyarlığı nedeniyle eşit olmadığı düşünülebilir. Aşağıdaki örnek, ve'nin (3.33333, 0.142857)(10/3, 1/7) eşit olmadığını bildirir.

System.Numerics.Complex c1 = new System.Numerics.Complex(3.33333, .142857);
System.Numerics.Complex c2 = new System.Numerics.Complex(10/3.0, 1.0/7);
Console.WriteLine("{0} = {1}: {2}", c1, c2, c1.Equals(c2));
// The example displays the following output:
//    (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): False
    let c1 = System.Numerics.Complex(3.33333, 0.142857)
    let c2 = System.Numerics.Complex(10. / 3., 1. / 7.)
    printfn $"{c1} = {c2}: {c1.Equals c2}"
// The example displays the following output:
//    (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): False
Dim c1 As New System.Numerics.Complex(3.33333, .142857)
Dim c2 As New System.Numerics.Complex(10/3, 1/7)
Console.WriteLine("{0} = {1}: {2}", c1, c2, c1.Equals(c2))       
' The example displays the following output:
'    (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): False

Önerilen tekniklerden biri, eşitlik değerlerini karşılaştırmak yerine iki değer (değerlerin gerçek ve sanal bileşenlerinden birinin .01% gibi) arasındaki kabul edilebilir bir fark marjı tanımlamaktır. İki değer arasındaki farkın mutlak değeri bu kenar boşluğundan küçük veya buna eşitse, farkın büyük olasılıkla duyarlık farkı ve dolayısıyla değerlerin eşit olması muhtemeldir. Aşağıdaki örnek, önceki kod örneğinin eşit olmadığını bulduğu iki karmaşık değeri karşılaştırmak için bu tekniği kullanır. Eşit olacak iki karmaşık sayıyı bulur.

System.Numerics.Complex c1 = new System.Numerics.Complex(3.33333, .142857);
System.Numerics.Complex c2 = new System.Numerics.Complex(10/3.0, 1.0/7);
double difference = .0001;

// Compare the values
bool result = (Math.Abs(c1.Real - c2.Real) <= c1.Real * difference) &
              (Math.Abs(c1.Imaginary - c2.Imaginary) <= c1.Imaginary * difference);
Console.WriteLine("{0} = {1}: {2}", c1, c2, result);
// The example displays the following output:
//    (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): True
    let c1 = System.Numerics.Complex(3.33333, 0.142857)
    let c2 = System.Numerics.Complex(10. / 3., 1. / 7.)
    let difference = 0.0001

    // Compare the values
    let result =
        (Math.Abs(c1.Real - c2.Real) <= c1.Real * difference)
        && (Math.Abs(c1.Imaginary - c2.Imaginary) <= c1.Imaginary * difference)

    printfn $"{c1} = {c2}: {result}"
// The example displays the following output:
//    (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): True
Dim c1 As New System.Numerics.Complex(3.33333, .142857)
Dim c2 As New System.Numerics.Complex(10/3.0, 1.0/7)
Dim difference As Double = .0001

' Compare the values
Dim result As Boolean = (Math.Abs(c1.Real - c2.Real) <= c1.Real * difference) And
                        (Math.Abs(c1.Imaginary - c2.Imaginary) <= c1.Imaginary * difference)
Console.WriteLine("{0} = {1}: {2}", c1, c2, result)       
' The example displays the following output:
'    (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): True

Ayrıca bkz.

Şunlara uygulanır