110,499
社区成员
发帖
与我相关
我的任务
分享
int t1 = 10;
int t2 = 10;
Console.WriteLine(t1 == t2); //True
Console.WriteLine(t1.Equals(t2)); //True
object a1 = 15;
object a2 = 15;
Console.WriteLine(a1 == a2); //False
Console.WriteLine(a1.Equals(a2)); //True
object b1 = new StringBuilder("a");
object b2 = new StringBuilder("a");
object b3 = b1;
Console.WriteLine(b1==b2); //False
Console.WriteLine(b1.Equals(b2)); //False
Console.WriteLine(b3 == b1); //True
Console.WriteLine(b3.Equals(b1)); //True
object a1 = 15;
object a2 = 15;
Console.WriteLine(a1 == a2); //False
Console.WriteLine(a1.Equals(a2)); //True
int t1 = 10;
int t2 = 10;
Console.WriteLine(t1 == t2); //True 这个不解释
Console.WriteLine(t1.Equals(t2)); //True 调用的是Int32的equals方法,都是10,true
object a1 = 15;
object a2 = 15;
Console.WriteLine(a1 == a2); //False a1和a2是俩Int32对象(应该是可以为null的),两个对象的地址不一样,这里为false
Console.WriteLine(a1.Equals(a2)); //True 对比的是值15,这里正确
object b1 = new StringBuilder("a");
object b2 = new StringBuilder("a");
object b3 = b1;
Console.WriteLine(b1==b2); //False 俩个对象,这里肯定false
Console.WriteLine(b1.Equals(b2)); //False 这个为啥为false,去看StringBuilder的源码,猜想:什么时候为true呢,调用Clone方法创建个副本的时候应该为true
Console.WriteLine(b3 == b1); //True 地址对比,true
Console.WriteLine(b3.Equals(b1)); //True 同一对象,肯定为true