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。這意味著 var1 和 var2 都在儲存器中引用相同的身份。因此,== 運算子將導致 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。這意味著 var1 和 var2 都指向記憶體中的不同身份。== 運算子返回 false,因為它比較 var1 和 var2 的引用標識。但是,Equals() 函式返回 true,因為它正在比較 var1 和 var2 的內容。
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