Dot-Net
String.Format 與“string”+“string”還是 StringBuilder?[複製]
可能的重複:
什麼是性能優先級以及優先選擇以下各項的條件是什麼:
String.Format("{0}, {1}", city, state);要麼
city + ", " + state;要麼
StringBuilder sb = new StringBuilder(); sb.Append(city); sb.Append(", "); sb.Append(state); sb.ToString();
- 編譯器將盡可能多地優化字元串
concat,例如,為了換行目的而拆分的字元串通常可以優化為單個字元串文字。- 與變數的連接將被編譯成
String.ConcatStringBuilder如果您對字元串進行多次(我猜超過 10 次左右)“修改”,可能會快很多,但它會帶來一些額外的成本,因為它在緩衝區中分配的空間比您需要的更多,並在它調整內部緩衝區的大小時需要。我個人
String.Format幾乎所有時間都在使用,原因有兩個:
- 維護格式字元串比重新排列一堆變數要容易得多。
String.Format接受IFormatProvider傳遞給IFormattable嵌入在字元串中的任何類型(例如數字)的 a,以便您為指定的文化獲得適當的數字格式,並且總體上只是更好地控制值的格式。例如,由於某些文化使用逗號作為小數點,因此如果您想確保數字的格式符合您的預期,您可能希望使用
StringBuilder或者String.Format指定。CultureInfo.InvariantCulture還有兩點要注意…
StringBuilder還有一個AppendFormat功能可以讓您靈活地String.Format不需要不必要的第二個緩衝區。- 使用時
StringBuilder,請確保不要通過連接傳遞給的參數來破壞目的Append。很容易錯過。