Gibt es eine Möglichkeit die Ausführlichkeit der Verwendung von String.Format (..., p1, p2, p3) zu reduzieren?

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

  •  03-10-2019
  •  | 
  •  

Frage

ich oft verwenden String.Format(), weil es den Bau von Saiten besser lesbar und handhabbar macht.

Gibt es trotzdem seine syntaktische Ausführlichkeit zu reduzieren, z.B. mit einer Verlängerung Methode, etc.?

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

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

z. Ich möchte alle meine und andere Methoden verwenden, die eine Zeichenfolge so, wie ich Console.Write() verwenden erhalten, z.

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

Lösung

Wie wäre:

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

Jetzt können Sie es so nennen:

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

Andere Tipps

Wenn Sie die Logger.LogEntry Methode steuern, können Sie einfach eine Überlastung hinzufügen, die die string.format umfasst. Nur erklären den zweiten Parameter als ParamArray und Sie sind gut zu gehen!

Ja, können Sie eine Erweiterungsmethode namens FormatWith, machen, die Sie Dinge können sagen, wie:

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

Es sollte leicht genug sein, Ihre eigene Rolle, aber hier ist ein Beispiel: http://james.newtonking.com/archive/2008/03/27/formatwith-string-format-extension-method.aspx

Wenn Logger.LogEntry ist eine statische Methode außerhalb Ihrer Kontrolle, dann nein; Sie können nur Erweiterungsmethoden Instanzen hinzufügen. Wenn es Ihre Art ist, könnten Sie hinzufügen:

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

Sie könnten die params-Schlüsselwort verwenden alle Argumente nach dem ersten Argument in ein Array zu kombinieren und das Array zu String.Format übergeben.

static void FormatString(string myString, params string[] format)
{
     Console.WriteLine(String.Format(myString, format));
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top