C#中String的问题

http://www.cnblogs.com/eaglet/archive/2009/05/13/1455994.html

瞎逛看到这篇贴子....

自己研究了一下....

写个总结,免得以后忘了还得重研究...

String s1 = "MyTest";

String s2 = "MyTest";

这两个的引用是相同的.

因为"MyTest"存放在暂存池中,两个引用也是相同的.

String s3 = new StringBuilder().Append("MyTest").ToString();时

这个是new了一个StringBuilder对象,所以引用与上面的s1和s2是不同的,但不知道这个s3是不是放在暂存池中..(本人觉得应该不是,因为s3是StringBuild的对象ToString()出来的结果)

String s4 = String.Intern(s3);

这时s4得到的是在暂存池中的与s3值相同的引用对象.

即得到的是s1和s2的相同引用.

所以((object)s4 == (object)s1)&((object)s4 == (object)s2)的结果是为true的.

但((object)s3 == (object)s2)|((object)s3 == (object)s1)|((object)s3 == (object)s4)这个结果是为false的.

 

从MSDN中新看到的名词"暂存池"

 

今天又有了对字符串新的理解:

先说结论:

      只有使用了双引号的字符串才会被储存在暂存池中..

      String a = "a";

      a += "b";

      这时"a"和"b"是储存在暂存池中的,而"ab"则没有.

由此,新的问题又来了..

      a所引用的字符串"ab"是如何储存的呢?

转载于:https://www.cnblogs.com/PeterHan/archive/2009/07/03/1516483.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值