字符串连接是否有.ToString()?

Web*_*euw 7 .net c# .net-3.5

我有一个语句,其中以下列方式分配字符串:

for (int i = 0; i < x; i++) 
{
    Foo.MyStringProperty = "Bar_" + i.ToString();
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

是否有任何之间的性能差异i.ToString()或只是简单的i,因为两者都只是转换了(文化不变?)等效字符串?

我很清楚的存在String.Concat(),String.Format,StringBuilder,等,但对于这种情况下的缘故,让我们假设我才可以使用+串联.

提前致谢.

Jon*_*eet 24

+String.Concat无论如何都要使用连接- String它本身不会暴露一个+运算符.

例如:

int i = 10;
string x = "hello" + i;
Run Code Online (Sandbox Code Playgroud)

编译成:

int i = 10;
object o1 = "hello";
object o2 = i; // Note boxing
string x = string.Concat(o1, o2);
Run Code Online (Sandbox Code Playgroud)

ToString直接呼叫将避免拳击并调用Concat(string, string)过载.因此,带有ToString调用的版本会稍微提高效率 - 但我非常怀疑它是否会很重要,我强烈建议您使用您认为更具可读性的版本.


Avi*_* P. 6

只是使用string + object强制对对象调用ToString() - 它等同于显式调用它.

  • @Aviad:但是时间上存在差异 - 这会影响值是否为盒装. (3认同)