Console WriteLine(var,var);不显示第二个变量?

时间:2016-11-02 22:16:37

标签: c# console.writeline

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

在某一点上,我想做以下事情:

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

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

5 个答案:

答案 0 :(得分:2)

取决于replyOne上的内容,但您使用Console.WriteLine重载,将格式字符串作为第一个参数,并使用多个对象替换该格式string(this one)。这就是.NET中的Composite Formatting

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

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

答案 1 :(得分:1)

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

有关详细信息,请参阅Console.WriteLine Method (String, Object)

答案 2 :(得分:1)

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

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

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

您可以用逗号,换行符(\n)或标签(\t)替换空格,以获得所需的格式。

答案 3 :(得分:0)

请改为尝试:

Console.WriteLine(replyOne + name + replyTwo);

或类似的东西。

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

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

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

答案 4 :(得分:0)

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