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 == dà 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.
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