對於string這個引用類型是非常特殊一個引用類型。 它有兩點特殊的地方。
第一點對象分配的特殊。
例如:
string str1 = "abcd"; string str2 = "abcd";
那麼.net在分配string類型的時候,先查看當前string類型列表是否有相同的,如果有的話,直接返回其的引用,否則重新分配。
第二點對象引用操作的特殊,可以說不同於真正意義上的引用操作。
例如:
string str1 = "abcd"; string str2 = str1; str2 = "efgh";// str1 is still "abcd" here
當對於一個新的string類型是原有對象引用的時候,這點和一般的引用類型一樣,但是當新的對象發生變化的時候,要重新分配一個新的地方,然後修改對象指向。 因此對於string操作的時候,尤其發生變化的時候,會顯得比較慢,因爲其牽扯到內存地址的變化。
對於數據量比較大的字符操作時候,使用StringBuilder來說效率會提升很高。