有没有一种方法可以减少使用string.format(…,p1,p2,p3)的详细性?
-
03-10-2019 - |
题
我经常使用 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);
解决方案
怎么样:
static void LogEntry(string format, params object[] args) {
Console.WriteLine(format, args); // For example.
}
现在您可以这样称呼它:
Logger.LogEntry("text '{0}' registered", pair.IdCode);
其他提示
如果您控制 Logger.LogEntry
方法,您可以简单地添加包含String.format的过载。只需将第二个参数声明为paramarray,就可以了!
是的,您可以制作一个名为Formatwith的扩展方法,它可以让您说出类似的话:
Logger.LogEntry("I hate my {0}".FormatWith(itemName));
自己滚动应该很容易,但这是一个例子: http://james.newtonking.com/archive/2008/03/27/formatwith-string-format-extension-method.aspx
如果 Logger.LogEntry
是您控制之外的静态方法,然后否;您只能在实例中添加扩展方法。如果是您的类型,则可以添加:
public static void LogEntry(string format, params object[] args) {
... string.Format(format,args) ...
}
您可以使用参数关键字将第一个参数之后的所有参数组合到数组中,然后将该数组传递给string.format。
static void FormatString(string myString, params string[] format)
{
Console.WriteLine(String.Format(myString, format));
}
不隶属于 StackOverflow