使用 Console.WriteLine() 的复杂 I/O
Complex I/O using Console.WriteLine()
在多年只使用 C++ 工作之后,我目前正在自学 C#。不用说,我需要重新学习很多东西。我的问题如下:
在 Windows 控制台应用程序中打印(写入控制台窗口)涉及多个变量、文本字符串和换行符的复杂信息的最佳方法是什么?
更简单地说,我如何将类似于以下 C++ 代码的内容翻译成 C#:
int x = 1; int y = 2; double a = 5.4;
cout << "I have " << x << " item(s), and need you to give" << endl
<< "me " << y << " item(s). This will cost you " << a << endl
<< "units." << endl;
在 C++ 中,这会将以下内容打印到控制台:
I have 1 item(s), and need you to give
give me 2 item(s). This will cost you 5.4
units.
这个例子完全是任意的,但我的程序中经常有像这样的简短而复杂的消息。我是否必须完全重新学习如何设置输出格式,或者 C# 中是否有我尚未找到的类似功能(我已经浏览了很多 Console.IO 文档)。
您可以在写到控制台的字符串中指定占位符,然后提供值来替换这些占位符,如下所示:
Console.WriteLine("I have {0} item(s), and need you to give\r\n" +
"me {1} item(s). This will cost you {2} \r\nunits.", x, y, a);
我认为为了便于阅读,我将其分开:
Console.WriteLine("I have {0} item(s), and need you to give", x);
Console.WriteLine("me {0} item(s). This will cost you {1} ", y, a);
Console.WriteLine("units.");
正如 BradleyDotNet 指出的那样,Console.WriteLine()
method doesn't directly perform the magic. It calls String.Format
, which in turn uses StringBuilder.AppendFormat
。
如果你想看看内部发生了什么,你可以check out the source code here。
在多年只使用 C++ 工作之后,我目前正在自学 C#。不用说,我需要重新学习很多东西。我的问题如下:
在 Windows 控制台应用程序中打印(写入控制台窗口)涉及多个变量、文本字符串和换行符的复杂信息的最佳方法是什么?
更简单地说,我如何将类似于以下 C++ 代码的内容翻译成 C#:
int x = 1; int y = 2; double a = 5.4;
cout << "I have " << x << " item(s), and need you to give" << endl
<< "me " << y << " item(s). This will cost you " << a << endl
<< "units." << endl;
在 C++ 中,这会将以下内容打印到控制台:
I have 1 item(s), and need you to give
give me 2 item(s). This will cost you 5.4
units.
这个例子完全是任意的,但我的程序中经常有像这样的简短而复杂的消息。我是否必须完全重新学习如何设置输出格式,或者 C# 中是否有我尚未找到的类似功能(我已经浏览了很多 Console.IO 文档)。
您可以在写到控制台的字符串中指定占位符,然后提供值来替换这些占位符,如下所示:
Console.WriteLine("I have {0} item(s), and need you to give\r\n" +
"me {1} item(s). This will cost you {2} \r\nunits.", x, y, a);
我认为为了便于阅读,我将其分开:
Console.WriteLine("I have {0} item(s), and need you to give", x);
Console.WriteLine("me {0} item(s). This will cost you {1} ", y, a);
Console.WriteLine("units.");
正如 BradleyDotNet 指出的那样,Console.WriteLine()
method doesn't directly perform the magic. It calls String.Format
, which in turn uses StringBuilder.AppendFormat
。
如果你想看看内部发生了什么,你可以check out the source code here。