C# - Console.WriteLine() 不显示第二个参数

本文关键字:显示 第二个 参数 Console WriteLine | 更新日期: 2023-09-27 18:35:14

在处理 C# Basic 数据类型时,我使用不同的方法创建了 2 个布尔变量,并且当我尝试使用 Console.WriteLine() 方法显示它们时,显示了第一个变量,但第二个没有显示。我知道通过仅在变量之间使用 + 符号或使用 Console.WriteLine 中的占位符语法来获得所需输出的替代方法,但我只想知道原因,为什么第二个参数没有显示?如果有人知道原因,请回答。

这是我正在处理的代码。

        bool b1 = true;
        System.Boolean b2 = new System.Boolean();
        b2 = false;
        Console.WriteLine( b1.ToString() , b2.ToString() );

C# - Console.WriteLine() 不显示第二个参数

Console.WriteLine的工作方式如下String.Format

  • 第一个参数:格式字符串。
  • 第 2 个到第 n 个:要使用的参数格式字符串。

这是您需要做的:

Console.WriteLine("{0} {1}", b1, b2);
检查在此

.NET框架中编写重载函数的方法和替代方案是:

Console.WriteLine(b1);Console.WriteLine(b2);

您调用的重载旨在将格式字符串作为第一个参数,并将要在格式字符串中使用的对象作为第二个参数。https://msdn.microsoft.com/en-US/library/586Y06yf(v=vs.110).aspx

你应该做的是调用Console.WriteLine两次:

Console.WriteLine(b1);
Console.WriteLine(b2);

这是来自控制台的官方文档。我想你认为参数是(字符串,字符串),但它实际上是(字符串,对象)。

        // Summary:
        //     Writes the text representation of the specified object, followed by the current
        //     line terminator, to the standard output stream using the specified format
        //     information.
        //
        // Parameters:
        //   format:
        //     A composite format string (see Remarks).
        //
        //   arg0:
        //     An object to write using format.
        //
        // Exceptions:
        //   System.IO.IOException:
        //     An I/O error occurred.
        //
        //   System.ArgumentNullException:
        //     format is null.
        //
        //   System.FormatException:
        //     The format specification in format is invalid.
        public static void WriteLine(string format, object arg0);

这是您在程序中尝试执行的操作:
Console.WriteLine(b1.ToString(),b2.ToString());

第一个参数接受格式,第二个参数接受要显示的对象,

在您的情况下,您提供了要显示的对象,但在第一个(格式)参数中,您没有指定显示的位置,它正在获取您的对象但无法在控制台中显示它,因为您没有指定该内容,在 C# 中您可以通过几种不同的方式指定它

Console.WriteLine(b1.ToString()+ " {0}", b2.ToString());
Console.WriteLine($"{b1.ToString()} {b2.ToString()}"); 
Console.WriteLine(b1.ToString() + " " + b2.ToString());