2016-11-02 9 views
0

私はC#の私の最初のプロジェクトの1つとしてコンソールに少しテキストベースの冒険を書いています。コンソールWriteLine(var、var); 2番目の変数は表示されませんか?

特定の時点で、私は次の操作を実行したい:

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

しかし、その最後の行に、最初の変数(replyOne)が表示されます。どのようにすべての値を表示できますか?

答えて

2

replyOneに何に依存しますが、最初の引数とそのフォーマット文字列(this one)の置換のためのオブジェクトの数としてフォーマット文字列をとるConsole.WriteLineオーバーロードを使用しています。これは、.NETでComposite Formattingと呼ばれているものです

あなたは文字列を連結されて何をしたいのか、あなたはいくつかの方法でそれを行うことができる場合:

  1. パスのみ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}"); 
    
+0

非常に包括的な答えをありがとう。 –

1

Console.WriteLineの複数引数オーバーロードでは、最初のパラメータは書式文字列であり、その他はすべて代入値とみなされます。

詳細はConsole.WriteLine Method (String, Object)を参照してください。

0

を補間文字列を使用してください:

Console.WriteLine(replyOne + name + replyTwo); 

または類似のもの。

今すぐメソッドを呼び出すと、replyOneの値がの形式のように扱われます。個々の出力項目ではありません。もちろん、書式引数にはnamereplyTwoの形式は{0}または{1}なので省略されています。

上記のように、フォーマット全体として(フォーマット引数をまったく使用せずに)使用するだけで、出力テキストを自分自身で連結することができます。

もちろん、出力の書式設定には他にもたくさんのオプションがあります。上記はあなたがこれまでに投稿したものに合っています。

1

Console.WriteLineに書式設定された文字列を出力する場合、最初の引数は、書式設定を定義するプレースホルダを含む文字列でなければなりません。だから、あなただけの3つの文字列を連続出力したいと仮定すると、あなたはこのような何かをする必要があります:出力3つの文字列がスペースで区切られます

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

スペースをカンマ、改行(\n)またはタブ(\t)で置き換えることで、必要な書式を取得できます。

+0

これは、出力にスペースを入れます。元の質問には、それらが望ましいことを示唆するものは何もありません。 –

+0

@PeterDuniho、実際には出力にスペースを入れていますが、スペースなしの出力を望むことは何もわかりません。 – ChrisF

+0

@ChrisF私はむしろそれらが新しいラインであることを期待したいと思います。 – zerkms

0
Console.WriteLine("{0},{1},{2}",replyOne,name,replyTwo); 
関連する問題