我正在尝试使用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());
它工作得非常好。有办法解决这个问题吗?
答案 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()));