2011-12-19 44 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 2011-12-19 01:28:13

回答

4

假設你要插入到流中文字{,你需要逃脫你的{與尚未另一括號這樣的:

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

同樣,對於最終梅開二度,這是在MSDN詳細字符串格式化常見問題here。序列{{變成{,並且}}變成}

從我的理解你的意圖是,在特定情況下,聲明全文是:

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

這應該給你的東西,如:

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

您需要使用{{來「逃脫」大括號。 Writeln{{0}解釋爲'literal {',然後是0},導致錯誤的格式錯誤。

+0

謝謝!我嘗試使用\ {但那並沒有那麼好。 – SharkRetriever 2011-12-19 01:26:54

0

改變你必須寫這個,看看它是否工作..還要確保你正在轉換變量類型,你有.ToString();需要知道實際聲明的類型是什麼......將代碼粘貼到您已聲明的前綴,sprad和我

Console.WriteLine(string.Format("sphere {0}{1} {2} textureGold_Metal", 
    pre, i.ToString(), sprad.ToString())); 
相關問題