C# Equals() vs ==

Muhammad Maisam Abbas 16 febbraio 2024
C# Equals() vs ==

Questo tutorial evidenzierà le differenze e le somiglianze tra l’operatore == e la funzione Equals() in C#.

Differenza tra l’operatore == e la funzione Equals() in C#

L’operatore == è un operatore di confronto in C#. L’operatore == confronta le identità di riferimento di entrambi gli operandi. D’altra parte, la funzione Equals() confronta il contenuto di due variabili stringa in C#. In genere, vengono utilizzati entrambi per confrontare due valori. Tuttavia, possono avere risultati diversi in scenari diversi. Il seguente esempio di codice mostrerà uno scenario in cui sia l’operatore == che la funzione Equals() sono veri.

using System;

namespace comparison {
  class Program {
    static void Main(string[] args) {
      object var1 = "MMA";
      object var2 = var1;
      if (var1 == var2) {
        Console.WriteLine("== is true");
      }
      if (var1.Equals(var2)) {
        Console.WriteLine("Equals is true");
      }
    }
  }
}

Produzione:

== is true Equals is true

Nel codice precedente, abbiamo inizializzato una variabile oggetto var2 con var2 = var1. Significa che sia var1 che var2 si riferiscono alla stessa identità nella memoria. Quindi, l’operatore == darà come risultato un risultato true. Poiché entrambi hanno lo stesso contenuto al loro interno, la funzione Equals() darà anche true.

Ora, dimostreremo un altro scenario in cui l’operatore ==false ma la funzione Equals() restituisce un valore true. Questo scenario viene discusso nell’esempio di codice riportato di seguito.

using System;

namespace comparison {
  class Program {
    static void Main(string[] args) {
      object var1 = "MMA";
      char[] varc = { 'M', 'M', 'A' };
      object var2 = new string(varc);
      if (var1 == var2) {
        Console.WriteLine("== is true");
      }
      if (var1.Equals(var2)) {
        Console.WriteLine("Equals is true");
      }
    }
  }
}

Produzione:

Equals is true

Nel codice precedente, abbiamo creato l’array di caratteri varc e lo abbiamo convertito nella variabile oggetto var2 passando varc nel costruttore di una variabile stringa. Significa che var1 e var2 puntano entrambi a identità diverse nella memoria. L’operatore == restituisce false perché confronta le identità di riferimento di var1 e var2. Ma la funzione Equals() restituisce true perché confronta i contenuti di var1 e var2.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn