初めて C# を使い始めたばかりで、チュートリアルを見ていると、連結 (console.writeline("Hello" + user)
ユーザーは文字列変数) とプレースホルダー (console.writeline("Hello {0}" , user
ユーザーは文字列変数) メソッドの出力の違いについては何も見つかりませんでした。 . 違いはありますか、それとも単にどちらの方法が簡単かということですか
3 に答える
C# に固有のものではなく、多くの言語が両方のスタイルをサポートしています。後者の形式は通常「より安全」と考えられていますが、具体的な理由を引用することはできません. 項目を複数の場所に表示する必要がある場合、または書式文字列を定数として保存する場合に便利です。詳細については、このスレッドをご覧ください: String.Format vs string concatenation を使用する方が良いのはいつですか? .
文字列連結とは対照的に、文字列フォーマッタを使用することは、ほぼ完全に読みやすさに関するものです。彼らが実際に何をするか、そして彼らがどのように実行するかでさえ、同じに十分近い.
このような単純なケースではどちらも問題ないように見えますが、フォーマット文字列に多数の値が混在する複雑な文字列がある場合は、より見栄えがよくなります。
より良い例を次に示します。
string output = "Hello " + username + ". I have spent " + executionTime + " seconds trying to figure out that the answer to life is: " + output;
対
string output = string.Format("Hello {0}. I have spent {1} seconds trying to figure out that the answer to life is: {2}"
, username, executionTime, output);
マットが言ったように、場所の保持は単純な連結よりも安全なアプローチと見なされますが、その理由についてはわかりません(調査する必要があります)。しかし、確かなことの 1 つは、パフォーマンスの観点からすると、プレース ホールディングは連結よりも少しコストのかかる操作です。Jon Skeet によるこのブログ エントリ "Formatting Strings"を確認してください。
ただし、プレースホルダーを数千回程度使用している場合にのみ、パフォーマンスが大幅に影響を受けます。