3

私は現在、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++ では、コンソールに次のように表示されます。

私は 1 個のアイテムを持っています。

私に2つのアイテムをください。これには5.4の費用がかかります

ユニット。

この例は完全に恣意的なものですが、私のプログラムには、このような短くて複雑なメッセージがよくあります。出力をフォーマットする方法を完全に再学習する必要がありますか、またはまだ見つけていない類似の機能が C# にあります (多くの Console.IO ドキュメントを掘り下げました)。

4

1 に答える 1

8

コンソールに出力する文字列でプレースホルダーを指定し、次のようにそれらのプレースホルダーを置き換える値を指定できます。

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()メソッドは魔法を直接実行しません。を呼び出しString.Format、次に を使用しStringBuilder.AppendFormatます。

内部で何が起こっているかを確認したい場合は、ここでソース コードを確認できます。

于 2015-01-08T01:06:13.990 に答える