Y at-il un moyen de réduire la verbosité d'utiliser String.Format (..., p1, p2, p3)?

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

  •  03-10-2019
  •  | 
  •  

Question

J'utilise souvent String.Format() car elle rend la construction de chaînes plus lisibles et faciles à gérer.

Y at-il de toute façon à réduire sa verbosité syntactique, par exemple avec une méthode d'extension, etc.?

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

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

par exemple. Je voudrais utiliser tous mes et d'autres méthodes qui reçoivent une chaîne de la façon dont je l'utilise Console.Write(), par exemple:.

Logger.LogEntry("text '{0}' registered", pair.IdCode);
Était-ce utile?

La solution

Que diriez-vous:

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

Maintenant, vous pouvez l'appeler comme ceci:

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

Autres conseils

Si vous contrôlez la méthode Logger.LogEntry, vous pouvez simplement ajouter une surcharge qui englobe le string.format. Il suffit de déclarer le deuxième paramètre en tant que ParamArray et vous êtes bon pour vous!

Oui, vous pouvez faire une méthode d'extension du nom FormatWith, ce qui vous permet de dire des choses comme:

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

Il devrait être assez facile à rouler vos propres, mais voici un exemple: http://james.newtonking.com/archive/2008/03/27/formatwith-string-format-extension-method.aspx

Si Logger.LogEntry est une méthode statique hors de votre contrôle, aucune; vous ne pouvez ajouter des méthodes d'extension aux instances. Si c'est votre type, vous pouvez ajouter:

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

Vous pouvez utiliser les mots clés pour params combiner tous les arguments après le premier argument dans un tableau et passer ce tableau à String.Format.

static void FormatString(string myString, params string[] format)
{
     Console.WriteLine(String.Format(myString, format));
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top