有没有一种方法可以减少使用string.format(…,p1,p2,p3)的详细性?

StackOverflow https://stackoverflow.com/questions/2774498

  •  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));
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top