将范围({)写入控制台应用程序中的字符串

时间:2011-12-19 01:20:44

标签: c# string console-application

我正在尝试使用c#console应用程序编写代码生成器。现在当我键入它时,我收到一个错误:

    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());

它工作得非常好。有办法解决这个问题吗?

3 个答案:

答案 0 :(得分: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}}

答案 1 :(得分:2)

您需要使用{{来“逃避”大括号。 Writeln{{0}解释为'literal {'后跟0},导致格式错误。

答案 2 :(得分:0)

更改你必须写的内容并查看它是否有效..还要确保你正在转换你拥有的变量类型.ToString();需要知道实际声明的类型是什么..将代码粘贴到已声明pre,sprad和i的位置

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