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