C# 中的 Equals() 與 ==

Muhammad Maisam Abbas 2024年2月16日
C# 中的 Equals() 與 ==

本教程將重點介紹 == 運算子和 C# 中的 Equals() 函式的區別和相似之處。

C# 中 == 運算子和 Equals() 函式之間的差異

== 運算子是 C# 中的比較運算子。== 運算子比較兩個運算元的參考標識。另一方面,Equals() 函式比較 C# 中兩個字串變數的內容。通常,兩者都用於比較兩個值。但是,它們在不同的情況下可能會有不同的結果。以下程式碼示例將說明 == 運算子和 Equals() 函式均為 true 的情況。

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

輸出:

== is true
Equals is true

在上面的程式碼中,我們使用 var2 = var1 初始化了物件變數 var2。這意味著 var1var2 都在儲存器中引用相同的身份。因此,== 運算子將導致 true 結果。由於它們內部都有相同的內容,因此 Equals() 函式也將給出 true

現在,我們將演示另一個場景,其中 == 運算子給出 false,但是 Equals() 函式返回 true 值。下面的程式碼示例中討論了這種情況。

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

輸出:

Equals is true

在上面的程式碼中,我們建立了字元陣列 varc,並通過在字串變數的建構函式中傳遞 varc,將其轉換為物件變數 var2。這意味著 var1var2 都指向記憶體中的不同身份。== 運算子返回 false,因為它比較 var1var2 的引用標識。但是,Equals() 函式返回 true,因為它正在比較 var1var2 的內容。

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

相關文章 - Csharp Operator