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