2017-04-24 21 views
0

私は基本的な概念的な疑念を持っており、しばらくの間答えを探していました。 (私は逃したちょうどこの一度リストオブジェクトの初期化

List<string> list = new List<string>() { "a", "b", "c" }; 

)、代わりに次のようにそれを初期化:私は、次のようにリストを初期化してきました

List<string> list = new List<string> { "a", "b", "c" }; 

ませんコンパイル時またはエラーだった時間を実行しますスローされる。 2番目の方法が正しいかどうかを知りたいですか?そして、両者の違いは何ですか?

+1

'()'はオプションですが、違いはありません。あなたがILを見るなら、それは同じでなければなりません。 –

+0

コンストラクタに引数を渡すときは '()'を使う必要があります。それ以外の場合は、オブジェクト初期化子を使うときに省略することができます。 – dcg

+0

私はそれを今、感謝を得る:) –

答えて

1

両方()はあなたの最初の例では、オプションの

で、コンパイラはあなたが明示的に、第二に

List<string> list = new List<string> { "a", "b", "c" }; 

デフォルトのコンストラクタを呼び出していることを知っていると同じ仕事をし、い

List<string> list = new List<string>() { "a", "b", "c" };