C#问题--高手99小弟啊

来源:百度知道 编辑:UC知道 时间:2024/09/20 16:40:52
以下代码输出结果为什么?请详细解说 嘿嘿
using System;
class TestOperator
{
public static void Main()
{
string m="TestEqual";
string n=string.Copy(m);
Console.WriteLine(m==n);
Console.WriteLine((object)m==(object)n);
}
}

不妨再加一行
string m = "TestEqual";
string n = string.Copy(m);
Console.WriteLine(m == n);
Console.WriteLine((object)m == (object)n);
Console.WriteLine((object)m.Equals( (object)n));

这样输出结果为
true
false
true

无论什么时候,if( obj1 == obj2 ) 是不相等的,因为不是同一个引用(不能确定其实际类型)

但是(string)obj1 == (string)obj2是相等的(如果它们可以转化为string)

在不用具体判断object实际类型的情况下,比较这两个object的值是否相等,只能用
if(obj1.Equals(obj2))