3

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

有没有办法减少它的语法冗长,例如使用扩展方法等?

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

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

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

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

5 回答 5

13

怎么样:

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

现在你可以这样称呼它:

Logger.LogEntry("text '{0}' registered", pair.IdCode);
于 2010-05-05T15:22:25.370 回答
4

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

于 2010-05-05T15:22:21.483 回答
2

是的,你可以创建一个名为 FormatWith 的扩展方法,它可以让你说:

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

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

于 2010-05-05T15:22:46.913 回答
1

如果Logger.LogEntry是您无法控制的静态方法,则否;您只能向实例添加扩展方法。如果它是您的类型,您可以添加:

public static void LogEntry(string format, params object[] args) {
    ... string.Format(format,args) ...
}
于 2010-05-05T15:21:01.863 回答
0

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

static void FormatString(string myString, params string[] format)
{
     Console.WriteLine(String.Format(myString, format));
}
于 2010-05-05T15:25:38.730 回答