1.前言
string是屬于引用類型的,這個(gè)大家都知道吧?但是平常在使用的過(guò)程中,發(fā)現(xiàn)它還是擁有一些值類型的特征的,這到底是為什么呢?
原因就是.Net考慮到假如大量的操作string對(duì)象的時(shí)候,大量對(duì)引用對(duì)象進(jìn)行操作的時(shí)候,性能肯定不如值類型來(lái)的爽快。.Net為了提高這個(gè)性能,提供了一個(gè)專門的解決方案:字符串駐留池!
2.正文
先讓我們來(lái)看一段代碼:
1 string str1 = "aa";2 string str2 = "a" + "a";3 Console.WriteLine(ReferenceEquals(str1, str2)); //print:true
這str1跟str2的內(nèi)存指向地址居然是一模一樣的!
原因是.Net在CLR內(nèi)部維