教你搞懂==和Equals的关系
先上代码
using System;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
object a = 1, b = 1;
int c = 1, d = 1;
if (a == b)
{
Console.WriteLine("a==b 进来了");
}
if (a.Equals(b))
{
Console.WriteLine("a.Equals(b) 进来了");
}
if (c == d)
{
Console.WriteLine("c==d 进来了");
}
if (c.Equals(d))
{
Console.WriteLine("c.Equals(d) 进来了");
}
}
}
}
以下是输出:
结论:
值比较:
Equals 与 == 一样。
对象比较:
== 比较的是对象的首地址,或者说是栈地址。
Equals比较的是对象的值,或者说是堆中的内容。
通俗易懂的说,就是==比较的永远是栈中存放的内容。
而Equals是经过封装之后的函数,可以对堆中的内容进行比较。
PS:我是青春代码,山高路远,江湖再见。
友情提示:转载请注明出处。