2011-12-19 10 views
5

私は、C#コンソールアプリケーションを使用してコードジェネレータを作成しようとしています。私はこれを入力すると今、私はエラーが表示されます。コンソールアプリケーションの文字列にスコープ({)を書き込む

Console.WriteLine("sphere {{0}{1} {2} texture{Gold_Metal}}", 
    pre, i.ToString(), sprad.ToString()); 

それは「間違った形式での入力が」私はすべての変数が文字列だったことを確認している、と彼らは言います。試してみたとき

Console.WriteLine("sphere {0}{1} {2} textureGold_Metal", 
    pre, i.ToString(), sprad.ToString()); 

これは完璧に機能しました。これを修正する方法はありますか?

+0

ただ、自分自身と中括弧をエスケープします。 – Centro

答えて

4

あなたがストリームに挿入リテラル{をしたいと仮定すると、あなたはまだので、別のブレースを使用して{をエスケープする必要があります。同様に、エンドブレース用

Console.WriteLine("sphere {{{0}{1} {2} ... 
          ^^ 
          ||-- see here. 

、これはMSDNで詳細です文字列形式のよくある質問here配列{{{となり、}}}となる。

私はなるためにあなたの意図を理解して何から

、あなたの特定のケースでは、完全な文は次のようになります。あなたが{{を使用する必要が

sphere {<Arg0><Arg1> <Arg2> texture{Gold_Metal}} 
2

:あなたのような何かを与える必要があります

Console.WriteLine("sphere {{{0}{1} {2} texture{{Gold_Metal}}}}", 
    pre, i.ToString(), sprad.ToString()); 

中括弧を "逃げる"。 Writelnは、を 'literal {'の後に0}と続けて解釈すると、誤った形式のエラーが発生します。

+0

ありがとう!私は\ {を使ってみましたが、うまくいきませんでした。 – SharkRetriever

0

これを書いて、動作しているかどうかを確認してください.ToString();がある場所で変数型を変換していることを確認してください。実際の宣言型が何であるかを知っておく必要があります..あなたは、事前に、sprad宣言している場所のコードを貼り付け、必要にどこで

Console.WriteLine(string.Format("sphere {0}{1} {2} textureGold_Metal", 
    pre, i.ToString(), sprad.ToString())); 
関連する問題