質問

私は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)を使用する場合、私はそれが最初のコンストラクタを取ることになると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top