string 和object 之间转换判断的问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 09:34:58
一个问题.
using System;
public class EHClass
{
static void Main()
{
string s1 = new string(new char[] { '.', 'n', 'e', 't' });
string s2 = ".net";
string s3 = ".net";
Console.WriteLine(s1 == s2);
Console.WriteLine(s2 == s3);
Console.WriteLine((object)s1 == (object)s2);
Console.WriteLine((object)s2 == (object)s3);
Console.WriteLine(s1 == (object)s2);
Console.WriteLine(s2 == (object)s3);
Console.WriteLine((object)s1 == s2);
Console.WriteLine((object)s2 == s3);
Console.WriteLine(s1.Equals (s2));
Console.ReadLine();
}
}
结果是:true,true,false,true,false,true,false,true,true.
有人知道第三个,第五个,还有第七个,为什么是"false",第四个为什么是"true"?第四个转化为"object"类项,相等比较是应用类型之间的比较应该是"false"才是.小弟谢过了!

.net 对字符串类有特殊处理,有个字符池的概念,用途是相同的字符串只存储一次。也就是说两个字符串的值如果相同,对象引用地址也会相同。这样可以简化编程,使用上表现为比较对象和按值比较完全相同。