C# Equals() vs ==

Muhammad Maisam Abbas 16 février 2024
C# Equals() vs ==

Ce tutoriel mettra en évidence les différences et similitudes de l’opérateur == et de la fonction Equals() en C#.

Différence entre l’opérateur == et la fonction Equals() en C#

L’opérateur == est un opérateur de comparaison en C#. L’opérateur == compare les identités de référence des deux opérandes. D’autre part, la fonction Equals() compare le contenu de deux variables chaîne en C#. En règle générale, les deux sont utilisés pour comparer deux valeurs. Mais, ils peuvent avoir des résultats différents dans différents scénarios. L’exemple de code suivant montrera un scénario dans lequel l’opérateur == et la fonction Equals() sont tous les deux vrais.

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

Production:

== is true Equals is true

Dans le code ci-dessus, nous avons initialisé une variable objet var2 avec var2 = var1. Cela signifie que var1 et var2 font référence à la même identité dans la mémoire. Ainsi, l’opérateur == aboutira à un résultat true. Comme ils ont tous les deux le même contenu à l’intérieur, la fonction Equals() donnera également true.

Nous allons maintenant démontrer un autre scénario dans lequel l’opérateur == donne false mais la fonction Equals() renvoie une valeur true. Ce scénario est décrit dans l’exemple de code ci-dessous.

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

Production:

Equals is true

Dans le code ci-dessus, nous avons créé le tableau de caractères varc et l’avons converti en variable objet var2 en passant varc dans le constructeur d’une variable chaîne. Cela signifie que var1 et var2 pointent tous les deux vers des identités différentes dans la mémoire. L’opérateur == renvoie false car il compare les identités de référence de var1 et var2. Mais, la fonction Equals() renvoie true car elle compare le contenu de var1 et 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

Article connexe - Csharp Operator