オプションのパラメータと混同C#文字列の挿入
-
22-08-2019 - |
質問
私はC#にかなり新たなんだ、と文字列の挿入(すなわち"some {0} string", toInsert
)を把握しようと、私は期待していなかった問題に出くわしました...
あなたは2つのコンストラクタを持っている場合:
public MyClass(String arg1) { ... }
public MyClass(String arg1, String arg2) { ... }
私は、文字列を挿入して最初のコンストラクタを使用するために、それは可能ですか?
...
toInsert = "def"
myClass = new MyClass("abc{0}ghi", toInsert)
...
またはC#は、第二のコンストラクタとしてこれを解釈し、最初の引数としてリテラル"abc{0}ghi"
を渡すのでしょうか?
解決
はい、これはちょうど2番目のパラメータとして解釈されます。
あなたが記述動作は文字列フォーマットと、このスタイルで文字列を受け入れ、すべてと呼ばれているが、バックグラウンドで()String.Formatのを使用しています。詳細については、そのメソッドのドキュメントを参照してください。
このコードを使用して、目的の動作を取得するには:
myClass = new MyClass(string.Format("abc{0}ghi", toInsert));
他のヒント
ジャスト行います:
public MyClass(string format, params object[] args)
{
this.FormattedValue = string.Format(format, args);
}
またはC#として解釈されます 第コンストラクタとリテラルを渡します 最初の引数として "ABC {0} GHI"
これが正しい答えです。 あなたはString.Formatの( "ABC {0} GHI"、toInsert)を使用する場合、私はそれが最初のコンストラクタを取ることになると思います。
所属していません StackOverflow