哪个在性能和内存利用方面更好?
// + Operator
oMessage.Subject = "Agreement, # " + sNumber + ", Name: " + sName;
// String.Format
oMessage.Subject = string.Format("Agreement, # {0}, Name: {1}", sNumber, sName);
我的偏好是内存利用率。整个应用程序使用+运算符。 String.Format和StringBuilder很少使用。我想减少因过多的字符串分配而导致的内存碎片量。
答案 0 :(得分:8)
此特定情况下的最佳选择是+
运算符。编译器将从您的代码中调用String.Concat
:
oMessage.Subject = String.Concat("Agreement, # ", sNumber, ", Name: ", sName);
String.Concat
将遍历字符串以确定总长度,分配具有该长度的字符串并将每个字符串复制到该字符串中。这是连接一串字符串的最有效方式。
注意:如果要使用值类型(例如整数)连接字符串,则应将它们显式转换为字符串。否则它们将被装箱,并且所有内容都作为对象发送到String.Concat
方法:
oMessage.Subject = "Agreement, # ", iNumber.ToString();