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