[C#] string 和 StringBuilder 的比較
String Vs StringBuilder
string
- 名字空間為
System
- 例項不可變(只讀)
- 當值連續變化時,會出現效能降級
- 執行緒安全
StringBuilder
(可變的string
)
- 所在名字空間為
System.Text
- 例項可變
- 當對存在的例項進行修改時,顯示出更好的效能
下面的例子,將建立2001個字串,而其中的2000個都將被捨棄。
string s = string.Empty;
for (i = 0; i < 1000; i++) {
s += i.ToString() + " ";
}
而改成使用StringBuilder
就能減少頻繁的記憶體分配,從而改善效能:
StringBuilder sb = new StringBuilder();
for (i = 0; i < 1000; i++) {
sb.Append(i);
sb.Append(' ');
}
簡而言之,string
物件不可變,對字串的操作都將在記憶體中產生副本,從而影響效能,StringBuilder
相反,至於執行緒安全,不清楚使用場景,應該是字串變數如果不重新賦值,可以保證內容不會被中途改變。
[1] https://stackoverflow.com/questions/3069416/difference-between-string-and-stringbuilder-in-c-sharp
相關文章
- Oracle date 型別比較和String比較Oracle型別
- C# string、stringBuffer和stringBuilderC#UI
- StringBuilder和String 的區別?UI
- StringBuilder和String的區別UI
- C#比較dynamic和Dictionary效能C#
- 不同Framework下StringBuilder和String的效能對比,及不同Framework效能比(附Demo)FrameworkUI
- c#中結構體和類的比較C#結構體
- String、StringBuilder和StringBufferUI
- String、StringBuffer和StringBuilder類的UI
- 67. StringBuilder和String 的區別?UI
- C# DataRow 比較C#
- String, + , StringBuilderUI
- C#基礎知識系列三(類和結構體、String和StringBuilder、equals和==)C#結構體UI
- 【Java】String、StringBuilder和StringBufferJavaUI
- java String,StringBuilder和StringBufferJavaUI
- [Java]String、StringBuilder和StringBufferJavaUI
- StringBuilder 比 String 快?空嘴白牙的,證據呢!UI
- PHP基礎-資料型別-string和int比較PHP資料型別
- Go與C#的比較 - RedditGoC#
- String和StringBuilder和StringBuffer三兄弟UI
- String與StringBuilderUI
- 使用String. localeCompare比較字串字串
- js 深比較和淺比較JS
- Java中的字串操作(比較String,StringBuiler和StringBuffer)Java字串UI
- 轉換String三種方式比較:toString()、String.valueOf()、(String)
- jquery判空 string型別的日期比較大小jQuery型別
- 從為什麼String=String談到StringBuilder和StringBufferUI
- C#中各種Lock的速度比較C#
- C#中String和string區別C#
- ejb 和 javabean的比較JavaBean
- 索引的分析和比較索引
- String、StringBuffer、StringBuilder的理解UI
- Go和Python比較的話,哪個比較好?GoPython
- String/StringBuilder字串拼接操作UI字串
- 簡單看看這兩個類 String和StringBuilderUI
- Java String StringBuilder 和 StringBuffer 用法詳解JavaUI
- C#比較兩個字串的相似度【轉】C#字串
- Java中String,StringBuffer和StringBuilder的區別(轉載)JavaUI