为什么抛出System.FormatException?

时间:2012-05-12 17:50:34

标签: c#

这是string.Format上的错误还是什么?

// Act
string l = "This is an UnitTest embedded resource.";
string r = "Please do not remove or change. Sincerely yours, {0}".FormatWith(model.Username);
string expected = "[\r\n\t{0}\r\n\r\n\r\n]\r\n{\r\n\t\r\n\t{1}\r\n\r\n}".FormatWith(l, r);

FormatWith方法只是语法糖的扩展。

public static string FormatWith(this string text, params object[] args)
{
    return string.Format(text, args);
}

1 个答案:

答案 0 :(得分:6)

您的问题是尝试在格式字符串中使用{}。它们需要被转义,否则它们将被视为格式变量。

将最后一行更改为:

string expected = "[\r\n\t{0}\r\n\r\n\r\n]\r\n{{\r\n\t\r\n\t{1}\r\n\r\n}}".FormatWith(l, r);