关于判断C#的两个string是否相等的问题?

char[]ch=newchar[]{'a','a','a'};stringa1=newstring(ch);stringa2="aaa";objectb1=a1;obj... char[] ch = new char[] { 'a', 'a', 'a' };
string a1 = new string(ch);
string a2 = "aaa";

object b1 = a1;
object b2 = a2;
Console.WriteLine(a1 == a2);
Console.WriteLine(a1.Equals(a2));
Console.WriteLine(b1 == b2);
Console.WriteLine(b1.Equals(b2));
输出的答案是:true true false true
我知道第二条为true是因为string重写了equals方法,第四条为true是因为多态,实际调用的还是string的equals方法,但是我搞不清楚为什么第一条和第三条的答案是不一样的,能不能清楚的解释一下
展开
 我来答
枚少少
2013-03-11 · TA获得超过225个赞
知道小有建树答主
回答量:308
采纳率:50%
帮助的人:179万
展开全部
"=="对于值类型来说是值比较,string是被微软处理过,所以微软把string当成值类型来看,
所以第一个为true

第三个也好解释,就是当你把a1和a2进行了Object装箱,
这个时候的b1和b2是引用类型使用"=="比较的是内存地址
两个object当然不会是同一个内存地址就的False
bluemind_2004
2013-03-10 · TA获得超过964个赞
知道小有建树答主
回答量:539
采纳率:93%
帮助的人:301万
展开全部
a1,a2 是 String 变量 ,C# 重载了运算符 "==" 和方法Equals ,系统解析的时候会直接比较String 的内容。

b1 和 b2 系统会认为是 Object ,虽然实际的类型是String,但系统仍会按Object 处理

“==” 判定的是 是否指向同一个Object 的实例。
“Equals” 判定的是两个Object 是否是同一种类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式