string的Equels问题小记

string s1="abc"; string s2="a"; string s3="b"; string s4="c"; string s5="a"+"b"+"c"; // a b c可以看做常量,CLR编译之前就识别出,并对其    进行字符串连接操作,并先从字符串缓冲池中查找是否有该字符串的引用.查找到的话 将引用地址赋给s5.所以比较时 返回true string s6=s2+s3+s4;//  s2+s3+s4 的操作时在CLR编译之后, 先重新创建一个字符串变量s6,开辟一块地址空间,然后识别字符串变量的引用值,并将其相加得到结果存在新的内存地址中. 所以比较的时候 s6与s1的引用地址不同,比较结果为false

object.ReferenceEques(s1,s5)=true; object.ReferenceEques(s1,s5)=false;

posted @ 2012-07-09 21:05  zxp19880910  阅读(143)  评论(0编辑  收藏  举报