如何让String.Format不解析{0}

我正在编写一个代码生成工具,经常会有类似的行

StringBuilder sp = new Stringbuilder(); sp.AppendFormat(" public {0}TextColumn()\n", className); sp.AppendLine(" {" sp.AppendLine(" Column = new DataGridViewTextBoxColumn();"); sp.AppendFormat(" Column.DataPropertyName = \"{0}\";\n", columnName); 

然而,我遇到的问题是当我遇到这样的一行时。

 sp.AppendFormat("return String.Format(\"{0} = '{0}'\", cmbList.SelectedValue);", columnName); 

我希望第一个{0}转入columnName的值,但是我希望第二个{0}保持String.Format ,因此内部String.Format将正确处理它。

我该怎么做呢?

使用双花​​括号:

 string result = string.Format("{{Ignored}} {{123}} {0}", 543); 

可以使用两个大括号字符来转义大括号。 string.Format的文档说明:

要以格式指定单个文字大括号字符,请指定两个前导或后缀大括号字符; 也就是说,“{{”或“}}”。

在你的例子中

 sp.AppendFormat("return String.Format(\"{0} = '{{0}}'\",cmbList.SelectedValue);", columnName); 
 sp.AppendFormat("return String.Format(\"{0} = '{{0}}'\", cmbList.SelectedValue);", columnName); 

使用“{{0}}”。 这将导致字符串“{0}”

 String.Format(\"{0} = '{{0}}'\",