C#输出中的串联和占位符之间有区别吗?或者这是一个偏好问题



刚开始第一次使用C#,在浏览教程时,我没有发现用于输出的连接(console.writeline("Hello" + user),其中user是字符串变量)和占位符(console.writeline("Hello {0}" , user)方法之间的区别。有什么不同吗?或者只是哪种方式更容易找到

它并不是C#特有的,很多语言都支持这两种风格。后一种形式通常被认为是"更安全"的,但我不能引用任何具体的原因。如果项目需要出现在多个位置,或者您希望将格式字符串保存为常量,则此选项非常有用。看看这个线程了解更多信息:什么时候使用String.Format与字符串串联更好?。

使用字符串格式化程序,而不是字符串串联,几乎完全是为了可读性。他们实际做什么,甚至他们的表现,都非常接近。

对于这样一个简单的情况,两者看起来都很好,但当你有一个复杂的字符串,其中有很多值混合在格式中时,字符串最终会看起来更好:

这里有一个更好的例子:

string output = "Hello " + username + ".  I have spent " + executionTime + " seconds trying to figure out that the answer to life is: " + output;

string output = string.Format("Hello {0}.  I have spent {1} seconds trying to figure out that the answer to life is: {2}"
    , username, executionTime, output);

正如Matt所说,持有仓位被认为是比简单串联更安全的方法,但出于这个原因,我不确定(我需要对此进行探索)。但有一点是肯定的,Place Holding在性能方面比Concatenation成本更高。查看Jon Skeet的博客条目"格式化字符串"。

尽管只有当您使用占位符数千次左右时,性能才会受到显著影响。

相关内容

最新更新