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を含むオーバーロードを追加するだけです。 2番目のパラメーターをパラマレイとして宣言するだけで、行ってもいいです!

はい、次のようなことを言うことができます。

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) ...
}

Paramsキーワードを使用して、最初の引数の後にすべての引数を配列に結合し、その配列をString.Formatに渡すことができます。

static void FormatString(string myString, params string[] format)
{
     Console.WriteLine(String.Format(myString, format));
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top