2010-12-14 12 views
74

Tôi viết thư này testcode của tôi và tôi không muốn wo viết:Làm cách nào để khởi tạo Danh sách C# trong cùng một dòng mà tôi khai báo. (String IEnumerable Collection Ví dụ)

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 có thể đếm được". ? Làm thế nào tôi có thể khởi tạo này trong một dòng bằng cách sử dụng Bộ sưu tập chuỗi IEnumerable "

Trả lời

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

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

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

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

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

Tôi thích điều này ngoặc đơn phương pháp, những gì C# phiên bản đã bắt đầu với? – SilverbackNet

+1

@SilverbackNet: C# 3. –

+9

Nó không * khá * dịch vào đó, ít nhất là không nói chung. Việc gán cho biến xảy ra * sau * tất cả các cuộc gọi 'Add' có được tạo ra - nó giống như là 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 * gán lại * giá trị của biến. –

13

Thay đổi mã để

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

hoặc

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

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

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

Tháo ngoặc:

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

Nó phụ thuộc phiên bản của 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" }; 
6

Chỉ mất ngoặc:

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

Rất tiếc, có vẻ như năm người đã đánh tôi với nó. –

Các vấn đề liên quan