控制台 WriteLine(var, var);不显示第二个变量?

Console WriteLine(var, var); not displaying second variable?

作为我在 C# 中的第一个项目之一,我正在控制台中编写一个基于文本的小冒险。

在某个时候,我想做以下事情:

 Console.WriteLine(intro);
 var name = Console.ReadLine();
 Console.Clear();
 Console.WriteLine(replyOne, name, replyTwo);

但是,在最后一行,只显示第一个变量 (replyOne)。如何显示所有值?

Console.WriteLine 的多参数重载中,第一个参数应该是格式字符串,其他所有参数都是替换值。

详情见Console.WriteLine Method (String, Object)

取决于 replyOne 上的内容,但您使用的是 Console.WriteLine 重载,它采用 格式字符串 作为第一个参数和一些对象用于替换该格式字符串(this one). That's what's called Composite Formatting in .NET

如果您想做的是连接字符串,您可以通过以下几种方式完成:

  1. 只传递一个字符串给Console.WriteLine:

    Console.WriteLine(replyOne + name + replyTwo);
    
  2. 使用格式字符串...这将使用您现在使用的相同重载,但传递格式字符串以替换第一个参数:

    Console.WriteLine("{0}{1}{2}", replyOne, name, replyTwo);
    
  3. 使用内插字符串 (仅限 C# 6 及更高版本)

    Console.WriteLine($"{replyOne}{name}{replyTwo}");
    

试试这个:

Console.WriteLine(replyOne + name + replyTwo);

或类似的东西。

当您现在调用该方法时,它将 replyOne 值视为输出的 格式 ,而不是单个输出项。当然,您的格式没有 {0}{1} 作为调用中的格式参数,namereplyTwo,因此它们被省略了。

您可以自己连接输出文本,如上所述,将其用作整个格式(根本没有任何格式参数)。

当然,还有许多其他选项可用于格式化输出。以上符合您目前发布的内容。

如果您希望 Console.WriteLine 输出格式化字符串,第一个参数必须是包含定义格式的占位符的字符串。所以假设你只想连续输出三个字符串,你需要这样的东西:

Console.WriteLine("{0} {1} {2}", replyOne, name, replyTwo);

这将输出由空格分隔的三个字符串。

您可以用逗号、换行符 (\n) 或制表符 (\t) 替换空格以获得您需要的格式。

Console.WriteLine("{0},{1},{2}",replyOne,name,replyTwo);