c# - 带或不带 .ToString() 的字符串连接?

标签 c# .net .net-3.5

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

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

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

我很清楚String.Concat()String.FormatStringBuilder等的存在,但是对于在这种情况下,假设我可能只使用 + 连接。

提前致谢。

最佳答案

+ 串联使用 String.Concat - String 本身不公开 + 运算符。

例如:

int i = 10;
string x = "hello" + i;

编译成:

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

而直接调用 ToString 将避免装箱并调用 Concat(string, string) 重载。因此,带有 ToString 调用的版本将稍微更有效率 - 但我非常怀疑它是否重要,我强烈建议您使用任何版本你觉得更具可读性。

关于c# - 带或不带 .ToString() 的字符串连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1974776/

相关文章:

C# 5 Async Await .Task.Factory.StartNew 取消

c# - 单元测试与键选择器和比较器不同

c# - 并行扩展

c# - .NET 中的混合语言项目

c# - LINQ 中的字符替换?

C# wpf 列表框显示多个成员路径

c# - 使用 Spring .NET 将依赖项注入(inject) MVC Controller

c# 按联系人状态和名称对列表中的对象进行排序

c# - 如何比使用 DynamicInvoke 更快地调用委托(delegate)?

c# - 在集成测试期间调试 .NET Web 应用程序