C# es igual a() vs ==

Muhammad Maisam Abbas 16 febrero 2024
C# es igual a() vs ==

Este tutorial resaltará las diferencias y similitudes del operador == y la función Equals() en C#.

Diferencia entre el operador == y la función Equals() en C#

El == operador es un operador de comparación en C#. El operador == compara las identidades de referencia de ambos operandos. Por otro lado, la función Equals() compara el contenido de dos variables de cadena en C#. Normalmente, ambos se utilizan para comparar dos valores. Pero pueden tener diferentes resultados en diferentes escenarios. El siguiente ejemplo de código mostrará un escenario en el que tanto el operador == como la función Equals() son verdaderas.

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");
      }
    }
  }
}

Producción :

== is true
Equals is true

En el código anterior, inicializamos una variable de objeto var2 con var2 = var1. Significa que tanto var1 como var2 se refieren a la misma identidad en la memoria. Entonces, el operador == dará como resultado un resultado true. Dado que ambos tienen el mismo contenido dentro de ellos, la función Equals() también dará true.

Ahora, demostraremos otro escenario en el que el operador == da false pero la función Equals() devuelve un valor true. Este escenario se analiza en el siguiente ejemplo de código.

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");
      }
    }
  }
}

Producción :

Equals is true

En el código anterior, creamos el array de caracteres varc y la convertimos a la variable de objeto var2 pasando varc en el constructor de una variable de cadena. Significa que var1 y var2 apuntan a diferentes identidades en la memoria. El operador == devuelve false porque compara las identidades de referencia de var1 y var2. Pero, la función Equals() devuelve verdadero porque está comparando el contenido de var1 y 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

Artículo relacionado - Csharp Operator