字符串驻留问题

static void Main(string[] args)
        {
            string str1 = "ABCD1234";
            string str2 = "ABCD1234";
            string str3 = "ABCD";
            string str4 = "1234";
            string str5 = "ABCD" + "1234";
            string str6 = "ABCD" + str4;
            string str7 = str3 + str4;  
            Console.WriteLine("string str1 = \"ABCD1234\";"); 
            Console.WriteLine("string str2 = \"ABCD1234\";"); 
            Console.WriteLine("string str3 = \"ABCD\";"); 
            Console.WriteLine("string str4 = \"1234\";"); 
            Console.WriteLine("string str5 = \"ABCD\" + \"1234\";"); 
            Console.WriteLine("string str6 = \"ABCD\" + str4;"); 
            Console.WriteLine("string str7 = str3 + str4;"); 
            Console.WriteLine("\nobject.ReferenceEquals(str1, str2) = {0}", object.ReferenceEquals(str1, str2)); 
            Console.WriteLine("object.ReferenceEquals(str1, \"ABCD1234\") = {0}", object.ReferenceEquals(str1,"ABCD1234")); 
            Console.WriteLine("\nobject.ReferenceEquals(str1, str5) = {0}", object.ReferenceEquals(str1, str5)); 
            Console.WriteLine("object.ReferenceEquals(str1, str6) = {0}", object.ReferenceEquals(str1, str6)); 
            Console.WriteLine("object.ReferenceEquals(str1, str7) = {0}", object.ReferenceEquals(str1, str7)); 
            Console.WriteLine("\nobject.ReferenceEquals(str1, string.Intern(str6)) = {0}", object.ReferenceEquals(str1, string.Intern(str6))); 
            Console.WriteLine("object.ReferenceEquals(str1, string.Intern(str7)) = {0}", object.ReferenceEquals(str1, string.Intern(str7)));
            Console.ReadKey();
        }



 
输出结果:
object.ReferenceEquals(str1, str2) = True
object.ReferenceEquals(str1, "ABCD1234") = True

object.ReferenceEquals(str1, str5) = True
object.ReferenceEquals(str1, str6) = False
object.ReferenceEquals(str1, str7) = False

object.ReferenceEquals(str1, string.Intern(str6)) = True
object.ReferenceEquals(str1, string.Intern(str7)) = True

intern pool(驻留池),对于字符串新建的,新建时要到intern pool搜索,看是否存在与此字符串内容相同的字符串,如果有这返回存在intern pool中字符串的引用,否则将要新建的字符串加入intern pool,并返回引用。





                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值