C# Equals() vs ==

Muhammad Maisam Abbas 16 fevereiro 2024
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.

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