C#では、次の構文を使用してリストを初期化できます。C#でGeneric.Listを初期化する
List<int> intList= new List<int>() { 1, 2, 3 };
私はその{}
構文がどのように動作するかを知っていただきたいと思います、そして、それは名前を持っている場合。 IEnumerable
を取るコンストラクタがあります。それを呼び出すことができます。
List<int> intList= new List<int>(new int[]{ 1, 2, 3 });
これは「標準」のようです。リストのデフォルトのコンストラクタを分解すると、私だけが表示されます
this._items = Array.Empty;
私はこれを行うことができます。
CustomClass abc = new CustomClass() {1, 2, 3};
そして、1, 2, 3
のリストを使用できるようにしてください。これはどのように作動しますか?
更新
ジョンスキートは
に答えパラメータなし コンストラクタを呼び出し、その後、追加の呼び出しです:
> List<int> tmp = new List<int>();
> tmp.Add(1); tmp.Add(2); tmp.Add(3);
> List<int> intList = tmp;
私はないが何であるかを理解しています。私はどのように知りたい。その構文は、Addメソッドを呼び出す方法を知っていますか?
更新
私は決まり文句はジョンスキートの答えを受け入れる方法を、知っています。しかし、文字列とintの例は素晴らしいです。また、非常に参考にMSDNのページでは、次のとおりです。
引数が間違った方法だったのを恥ずかしく思っていましたが、今修正されました:) –
なぜ型が列挙可能なのか気になるのですか?それはC#を.NETにもっと気づかせること以外に何も追加していないようです。なぜなら、foreachにはcompatの署名が必要なのはなぜだろうか。 @ lang 'に結び付けられています – meandmycode
@ meandmycode:pre-genericsにはボクシングなしでイテレータを公開する方法が他にないため、foreachはIEnumerableに関連付けられていません。ジェネリックでは、IEnumerableにちょうど*依存していると確信しています。 (続き) –