補間文字列(C#6の新機能)を使い始めましたが、これは非常に便利で優雅です。しかし、私のニーズに応じて、文字列の形式をパラメータとしてメソッドに渡す必要があります。次のようなもの:
MyMethod(string format)
過去に、私はそれを次の方法で使用しました:
MyMethod("AAA{0:00}")
今私はこのコードを試しました:
MyMethod($"AAA{i:00}")
ただし、はi
メソッド内で作成され、このコンテキストではスコープ外であるため、これは機能しません。
補間された文字列をパラメータとしてメソッドに渡すためのトリックを使用することは可能ですか?
それはできません。それもあまり良い考えではありません。つまり、別のメソッドのローカル変数を使用しているということです。
これは、この機能の目的を無効にします-コンパイラで検証可能な文字列補間とローカル変数へのバインドを行います。
C#にはいくつかの良い選択肢があります。たとえば、Func
:を使用します
public void MyMethod(Func<int,string> formatNumber)
{
int i = 3;
var formatted = formatNumber(i);
}
使用:
MyMethod(number => $"AAA{number:00}");
これは、現在のフォーマット文字列とさまざまな場所での使用法よりも優れています。
複数の変数がある場合、このアプローチは拡張できますが、それらをクラス(または構造体)にグループ化することを検討してfunc
ください。見栄えがよくなり、コードが読みやすくなります。このクラスは.ToString()
、をオーバーライドすることもできます。これは便利な場合があります。
もう1つの簡単なオプションは、フォーマット:MyMethod("00")
とi.ToString(format)
、だけを渡すことですが、これはおそらく単純化された例でのみ機能します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加