string a="abc";
string b = "abc";
Console.WriteLine(a == b); //第一行
Console.WriteLine((object)a==b); //第二行
Console.WriteLine((object)a == (object)b); //第三行
Console.WriteLine("____________");
object c = "abc";
object d = "abc";
Console.WriteLine(c == d); //第四行
Console.WriteLine("____________");
int e = 1;
int f = 1;
Console.WriteLine(e == f); //第五行
Console.WriteLine((object)e == (object)f); //第六行
Console.Read();输出结果是:
True
True
True
____________
True
____________
True
False
什么时候是对象比较什么时候是值比较啊..!?!? 分不清楚啊 ...为什么
Console.WriteLine((object)a == (object)b); //第三行
Console.WriteLine((object)e == (object)f); //第六行
结果不一样啊 ,..!?为什么不能Console.WriteLine((object)e == f);这样写啊..!?!?
好迷茫.. 还望高手指教 ..
string b = "abc";
Console.WriteLine(a == b); //第一行
Console.WriteLine((object)a==b); //第二行
Console.WriteLine((object)a == (object)b); //第三行
Console.WriteLine("____________");
object c = "abc";
object d = "abc";
Console.WriteLine(c == d); //第四行
Console.WriteLine("____________");
int e = 1;
int f = 1;
Console.WriteLine(e == f); //第五行
Console.WriteLine((object)e == (object)f); //第六行
Console.Read();输出结果是:
True
True
True
____________
True
____________
True
False
什么时候是对象比较什么时候是值比较啊..!?!? 分不清楚啊 ...为什么
Console.WriteLine((object)a == (object)b); //第三行
Console.WriteLine((object)e == (object)f); //第六行
结果不一样啊 ,..!?为什么不能Console.WriteLine((object)e == f);这样写啊..!?!?
好迷茫.. 还望高手指教 ..
由于string对==运算符重载过,所以比较的是值
值类型装箱后就成了引用类型,所以比较的是引用
equals()方法比较的是两个对象的内容是否一致.
equals也就是比较引用类型是否是对同一个对象的引用。对象比较
string是引用类型,如果不重载==的话,比较的应该是引用,重载之后就是比较值了