有没有办法减少使用String.Format(....,p1,p2,p3)的冗长程度?

时间:2010-05-05 15:19:13

标签: c# string.format verbosity

我经常使用String.Format()因为它使字符串的构建更具可读性和可管理性。

无论如何都要减少它的句法冗长,例如使用扩展方法等?

Logger.LogEntry(String.Format("text '{0}' registered", pair.IdCode));

public static void LogEntry(string message)
{
    ...
}

e.g。我想使用我使用Console.Write()的方式接收字符串的所有方法和其他方法,例如:

Logger.LogEntry("text '{0}' registered", pair.IdCode);

5 个答案:

答案 0 :(得分:13)

怎么样:

static void LogEntry(string format, params object[] args) {
    Console.WriteLine(format, args); // For example.
}

现在你可以这样称呼它:

Logger.LogEntry("text '{0}' registered", pair.IdCode);

答案 1 :(得分:4)

如果您控制Logger.LogEntry方法,则只需添加包含string.format的重载即可。只需将第二个参数声明为一个paramarray,你就可以了!

答案 2 :(得分:2)

是的,您可以创建一个名为FormatWith的扩展方法,它允许您说出以下内容:

Logger.LogEntry("I hate my {0}".FormatWith(itemName));

滚动自己应该很容易,但这是一个例子:http://james.newtonking.com/archive/2008/03/27/formatwith-string-format-extension-method.aspx

答案 3 :(得分:1)

如果Logger.LogEntry是您控制之外的静态方法,那么不;您只能向实例添加扩展方法。如果是您的类型,您可以添加:

public static void LogEntry(string format, params object[] args) {
    ... string.Format(format,args) ...
}

答案 4 :(得分:0)

您可以使用params关键字将第一个参数之后的所有参数组合到一个数组中,并将该数组传递给String.Format。

static void FormatString(string myString, params string[] format)
{
     Console.WriteLine(String.Format(myString, format));
}