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 を含むオーバーロードを追加するだけです。2 番目のパラメーターを 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 に答える