日期:2014-05-18  浏览次数:20784 次

类型比较的问题,比较运算符==
类:Animals

Animals animalList1 = new Animals();
Animals animalList2 = new Animals();


1.
if(animalList1==animalcule)
{}

animalList1,animalList2是引用类型, 答案是false
2.
string str1 = "3";
string str2 = "3";
if (str1 == str2)
{}
str1,str2也是引用类型,结果怎么是true呢



------解决方案--------------------
难道你不知道string是特殊的引用类型吗?它是按照内容比较的,而不是引用地址。
------解决方案--------------------
string 比较默认是按照序号排序规则比较,即Ascii码
引用类型则是按照对象地址看是否引用同一个对象,animalList1==animalcule类似于 Object.ReferenceEquals(animalList1,animalcule)
------解决方案--------------------
探讨
引用:

字符串是特殊的引用类型。出于节省空间,以及优化性能的考虑。
事实上系统内是维护一个类似于字符串池的东西,所有用到的字符串都在里面。相同的字符串其实是公用的同一个对象。


我能这么理解你的话吗?

既然是同一个对象,那我“3”==“4”应该为true