C# Equals() vs ==

Muhammad Maisam Abbas 16 Februar 2024
C# Equals() vs ==

In diesem Tutorial werden die Unterschiede und Ähnlichkeiten des Operators == und der Funktion Equals() in C# hervorgehoben.

Unterschied zwischen dem Operator == und der Funktion Equals() in C#

Der Operator == ist ein Vergleichsoperator in C#. Der Operator == vergleicht die Referenzidentitäten beider Operanden. Andererseits vergleicht die Funktion Equals() den Inhalt zweier Zeichenkettenvariablen in C#. In der Regel werden beide zum Vergleichen von zwei Werten verwendet. Sie können jedoch in verschiedenen Szenarien unterschiedliche Ergebnisse erzielen. Das folgende Codebeispiel zeigt ein Szenario, in dem sowohl der Operator == als auch die Funktion Equals() wahr sind.

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

Ausgabe:

== is true
Equals is true

Im obigen Code haben wir eine Objektvariable var2 mit var2 = var1 initialisiert. Dies bedeutet, dass sich sowohl var1 als auch var2 auf dieselbe Identität im Speicher beziehen. Der Operator == führt also zu einem true Ergebnis. Da beide den gleichen Inhalt enthalten, gibt die Funktion Equals() auch true aus.

Nun werden wir ein anderes Szenario demonstrieren, in dem der Operator == false angibt, die Funktion Equals() jedoch einen Wert true zurückgibt. Dieses Szenario wird im folgenden Codebeispiel erläutert.

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

Ausgabe:

Equals is true

Im obigen Code haben wir das Zeichenarray varc erstellt und es in die Objektvariable var2 konvertiert, indem wir im Konstruktor einer Zeichenkettenvariablen varc übergeben haben. Dies bedeutet, dass var1 und var2 beide auf unterschiedliche Identitäten im Speicher zeigen. Der Operator == gibt false zurück, da er die Referenzidentitäten von var1 und var2 vergleicht. Die Funktion Equals() gibt jedoch true zurück, da sie den Inhalt von var1 und var2 vergleicht.

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

Verwandter Artikel - Csharp Operator