问个对象比较相等的问题!
下面这段代码:
string a= "hello ";
string b=string.Copy(a);
string c= "hello ";
Console.WriteLine((object)a==(object)b);
console.Writeline((object)a==(object)c);
输出是:
false
true
为什么是这个结果?
------解决方案--------------------对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。
------解决方案--------------------因为二个都被强制转换成了Object,所以都算做一般的对像,所以就出现了上面的结果
如果把Object去掉,就都是True了
------解决方案--------------------“hello”是常量,在编译时,a和c指向了相同的地址,就是说a和c时相同的引用。有程序为证:
object a= "hello ";
object c= "hello ";
Console.WriteLine(a==c);
结果true