C# Equals() vs ==
Este tutorial irá destacar as diferenças e semelhanças do operador ==
e da função Equals()
em C#.
Diferença entre o operador ==
e a função Equals()
em C#
O ==
operador é um operador de comparação em C#. O operador ==
compara as identidades de referência de ambos os operandos. Por outro lado, a função Equals()
compara o conteúdo de duas variáveis de string em C#. Normalmente, ambos são usados para comparar dois valores. Porém, eles podem ter resultados diferentes em cenários diferentes. O exemplo de código a seguir mostrará um cenário onde o operador ==
e a função Equals()
são verdadeiros.
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");
}
}
}
}
Resultado:
== is true Equals is true
No código acima, inicializamos uma variável de objeto var2
com var2 = var1
. Isso significa que var1
e var2
referem-se à mesma identidade na memória. Portanto, o operador ==
resultará em um resultado true
. Uma vez que ambos têm o mesmo conteúdo dentro deles, a função Equals()
também fornecerá true
.
Agora, demonstraremos outro cenário no qual o operador ==
fornece false
, mas a função Equals()
retorna um valor true
. Este cenário é discutido no exemplo de código abaixo.
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");
}
}
}
}
Resultado:
Equals is true
No código acima, criamos o array de caracteres varc
e o convertemos na variável de objeto var2
passando varc
no construtor de uma variável de string. Isso significa que var1
e var2
estão apontando para identidades diferentes na memória. O operador ==
retorna false
porque compara as identidades de referência de var1
e var2
. Mas, a função Equals()
retorna true porque está comparando o conteúdo de 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