Trong C#, tôi có thể khởi tạo danh sách bằng cú pháp sau.Khởi tạo Generic.List trong C#
List<int> intList= new List<int>() { 1, 2, 3 };
Tôi muốn biết cách hoạt động của cú pháp {}
và nếu tên đó có tên. Có một hàm tạo có số IEnumerable
, bạn có thể gọi nó.
List<int> intList= new List<int>(new int[]{ 1, 2, 3 });
Điều đó có vẻ "tiêu chuẩn" hơn. Khi tôi xây dựng cấu trúc mặc định cho Danh sách tôi chỉ thấy
this._items = Array.Empty;
Tôi muốn có thể thực hiện việc này.
CustomClass abc = new CustomClass() {1, 2, 3};
Và có thể sử dụng danh sách 1, 2, 3
. Cái này hoạt động ra sao?
Cập nhật
Jon Skeet trả lời
Nó gọi constructor parameterless , và sau đó gọi Địa chỉ:
> List<int> tmp = new List<int>();
> tmp.Add(1); tmp.Add(2); tmp.Add(3);
> List<int> intList = tmp;
tôi hiểu những gì đang làm. Tôi muốn biết làm thế nào. Cú pháp đó biết cách gọi phương thức Thêm như thế nào?
Cập nhật
Tôi biết, làm thế nào cliche để chấp nhận một câu trả lời Jon Skeet. Nhưng, ví dụ với các chuỗi và ints là tuyệt vời. Cũng là một trang MSDN rất hữu ích là:
Xấu hổ các đối số là sai đường tròn - nhưng đã được chỉnh sửa ngay bây giờ :) –
Vậy tại sao nó quan tâm đến loại đó là đếm được? nó dường như không thêm bất cứ điều gì khác hơn là làm cho C# nhận thức của NET, tương tự như IDisposable .. làm cho tôi tự hỏi tại sao foreach yêu cầu JUST một chữ ký compat, và không giao diện .. Tôi nghĩ ý tưởng là như vậy C# sẽ không được đặc biệt gắn liền với một 'lang' – meandmycode
@meandmycode: foreach không liên kết với IEnumerable vì trước khi generics không có cách nào khác để lộ một iterator mà không có boxing. Với generics tôi chắc chắn nó sẽ có * chỉ * dựa trên IEnumerable. (Tiếp theo) –