可能重复:
C# 字符串输出:格式还是连续?
Console.WriteLine("Hi there, {0} {1}!", userName, userSurname);
Console.WriteLine("Hi there, " + userName + " " + userSurname + "!" );
我想知道这些方式有什么不同,哪个更好?
可能重复:
C# 字符串输出:格式还是连续?
Console.WriteLine("Hi there, {0} {1}!", userName, userSurname);
Console.WriteLine("Hi there, " + userName + " " + userSurname + "!" );
我想知道这些方式有什么不同,哪个更好?
为了:
Console.WriteLine("Hi there, {0} {1}!", userName, userSurname);
您的第一个电话解决为:Console.WriteLine(string,object,object)
在伊利诺伊州
IL_000d: ldstr "Hi there, {0} {1}!"
IL_0012: ldloc.0
IL_0013: ldloc.1
IL_0014: call void [mscorlib]System.Console::WriteLine(string,
object,
object)
为了:
Console.WriteLine("Hi there, " + userName + " " + userSurname + "!" );
而您的第二条语句调用string.Concat
方法。
IL_0042: call string [mscorlib]System.String::Concat(string[])
IL_0047: call void [mscorlib]System.Console::WriteLine(string)
如果您使用ILSpy查看代码,您将看到+
用于字符串连接的部分已替换为对string.Concat
方法的调用
string userName = "Test";
string userSurname = "Test2";
Console.WriteLine("Hi there, {0} {1}!", userName, userSurname);
Console.WriteLine(string.Concat(new string[]
{
"Hi there, ",
userName,
" ",
userSurname,
"!"
}));
关于性能差异,我相信如果有任何差异可以忽略不计。
Both are same.
At runtime, first option is resolved to create complete string.
Still First is better as its a much cleaner way of judging what string will look like finally.
第一个涉及标准 .NET 格式,第二个是简单的字符串连接。
我更喜欢第一个,因为它使 display 与 data 分开,并且它允许我存储不同的格式字符串来进行本地化,例如。这是想法:
var EnglishFormat = "Hi there, {0} {1}!";
var FrenchFormat = "Salut tout le monde, {0} {1}!";
...
Console.WriteLine(currentLocaleFormat, userName, userSurname);
一般的String.Format vs String concatenation主题已经在 StackOverflow 上讨论过很多次,请参考以下问题(只是开始):
There is no difference in the result.
The first one uses string formatting the second one concatenates the strings.
Try to avoid concatenations because it uses more memory
两个命令输出相同的结果没有区别。第一个更好,因为它避免了额外的空字符串连接。
这两个示例都将打印相同的结果。我发现在第一个示例中更容易看到结果应该是什么,如果应该显示的字符串很长,那么可能很难看到它的样子。
当我应该向用户打印一些东西时,我总是使用第一个示例。