摘要:
C#比较两个字符串是否相等。string strA=”Hello”;Console.WriteLine(Object.ReferenceEquals(“Hello”,strA));输出结果:true这个原因是:C#使用了字符串驻留. 当CLR初始化时,它会创建一个内部的散列表,其中的键为字符串,值为指向托管维中宁符串对象的引用。刚开始,该表为空(当然)。当JIT编译器编译方法时,它会在散列表中查找每一个文本常量字符串。对于上面的代码,编译器首先会查找第一个“Hello”字符串,并且因为它没有找到,它便会在托管堆中构造一个新的String对象(指向该字符串),然后将“Hello”字符串和指向该对 阅读全文