string.format vs +运算符用于字符串连接

时间:2012-03-20 23:18:01

标签: .net string

哪个在性能和内存利用方面更好?

// + Operator
oMessage.Subject = "Agreement, # " + sNumber + ", Name: " + sName;

// String.Format
oMessage.Subject = string.Format("Agreement, # {0}, Name: {1}", sNumber, sName);

我的偏好是内存利用率。整个应用程序使用+运算符。 String.Format和StringBuilder很少使用。我想减少因过多的字符串分配而导致的内存碎片量。

1 个答案:

答案 0 :(得分:8)

此特定情况下的最佳选择是+运算符。编译器将从您的代码中调用String.Concat

oMessage.Subject = String.Concat("Agreement, # ", sNumber, ", Name: ",  sName);

String.Concat将遍历字符串以确定总长度,分配具有该长度的字符串并将每个字符串复制到该字符串中。这是连接一串字符串的最有效方式。


注意:如果要使用值类型(例如整数)连接字符串,则应将它们显式转换为字符串。否则它们将被装箱,并且所有内容都作为对象发送到String.Concat方法:

oMessage.Subject = "Agreement, # ", iNumber.ToString();