Làm thế nào tôi có thể khởi tạo một Danh sách C # trong cùng một dòng mà tôi khai báo. (Ví dụ về Bộ sưu tập chuỗi IEnumerable)


107

Tôi đang viết mã thử nghiệm của mình và tôi không muốn viết:

List<string> nameslist = new List<string>();
nameslist.Add("one");
nameslist.Add("two");
nameslist.Add("three");

Tôi rất thích viết

List<string> nameslist = new List<string>({"one", "two", "three"});

Tuy nhiên, {"một", "hai", "ba"} không phải là "Bộ sưu tập chuỗi IEnumerable". Làm cách nào để tôi có thể khởi tạo điều này trong một dòng bằng Bộ sưu tập chuỗi IEnumerable "?

Câu trả lời:


168
var list = new List<string> { "One", "Two", "Three" };

Về cơ bản, cú pháp là:

new List<Type> { Instance1, Instance2, Instance3 };

Được dịch bởi trình biên dịch là

List<string> list = new List<string>();
list.Add("One");
list.Add("Two");
list.Add("Three");

Tôi thích phương thức không có dấu ngoặc đơn này, phiên bản c # đã bắt đầu bằng gì?
SilverbackNet

9
Nó không hoàn toàn được dịch sang điều đó, ít nhất là không nói chung. Việc gán cho biến xảy ra sau khi tất cả các Addlệnh gọi đã được thực hiện - nó giống như thể nó sử dụng một biến tạm thời, với list = tmp;ở cuối. Điều này có thể quan trọng nếu bạn đang chỉ định lại giá trị của một biến.
Jon Skeet

Tôi tin rằng thuộc tính tự động và bộ khởi tạo đối tượng đã được giới thiệu với .NET 3, tôi tin rằng đó là cùng một phiên bản Framework, chỉ là một trình biên dịch cập nhật để hỗ trợ LINQ.
Matthew Abbott

@Jon, Chúc mừng, tôi chưa bao giờ biết phần đó. : D
Matthew Abbott

@Jon Skeet: "... Điều này có thể quan trọng nếu bạn đang chỉ định lại giá trị của một biến." bạn có thể giải thích thêm một chút về nhận xét này?
Tony

17

Thay đổi mã thành

List<string> nameslist = new List<string> {"one", "two", "three"};

hoặc là

List<string> nameslist = new List<string>(new[] {"one", "two", "three"});

mục đích của việc sử dụng dòng thứ hai "List <string> nameslist = new List <string> (new [] {" một "," hai "," ba "});" khi nào chúng ta có thể sử dụng nó? Ngoài ra, ý nghĩa của "new [] {...}" trong cú pháp thứ hai là gì? Tại sao từ khóa new được sử dụng cùng với dấu ngoặc [] ???
Tony



3

Bỏ dấu ngoặc đơn:

List<string> nameslist = new List<string> {"one", "two", "three"};

3

Tùy thuộc vào phiên bản C # bạn đang sử dụng, từ phiên bản 3.0 trở đi, bạn có thể sử dụng ...

List<string> nameslist = new List<string> { "one", "two", "three" };

1

Tôi nghĩ rằng điều này sẽ hoạt động đối với các giá trị int, long và string.

List<int> list = new List<int>(new int[]{ 2, 3, 7 });


var animals = new List<string>() { "bird", "dog" };

0

Đây là một cách.

List<int> list = new List<int>{ 1, 2, 3, 4, 5 };

Đây là một cách khác.

List<int> list2 = new List<int>();

list2.Add(1);

list2.Add(2);

Tương tự với các chuỗi.

Ví dụ:

List<string> list3 = new List<string> { "Hello", "World" };
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.