c# - 这些与 writeline() 中的方法有什么不同?

标签 c# .net console

<分区>

Possible Duplicate:
C# String output: format or concat?

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,
    "!"
}));

关于性能上的差异,我相信即使有差异也可以忽略不计。

关于c# - 这些与 writeline() 中的方法有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12489536/

相关文章:

c# - 当客户端同时发送大量请求时,HttpWebRequest 需要很长时间才能发送

c# - File.Delete 访问路径被拒绝

java - 如何设置 for 循环计数从 1 而不是 0 开始?

c++ - fprintf()/std::cout 不会将字符串的一部分打印到 stdout/stderr

java - 启动小程序后,僵尸 java 解释器会阻止 java 控制台在重新启动时重新出现

c# - 检查数据库中的单元格是否为空的正确方法是什么

c# - 判断服务是否已经安装

.net - 如何更新多个 SQL Server 数据库架构

C# 在弹出窗口中显示进度条

.net - 创建 XML 并通过 HTTP post 发送