2009-04-06 28 views
62

Tôi đang tìm một cách nhanh chóng để tạo danh sách các giá trị trong C#. Trong Java, tôi thường sử dụng đoạn mã bên dưới:Cách nhanh chóng để tạo danh sách các giá trị trong C#?

List<String> l = Arrays.asList("test1","test2","test3"); 

Có tương đương nào trong C# ngoài hình ảnh rõ ràng bên dưới không?

IList<string> l = new List<string>(new string[] {"test1","test2","test3"}); 

Trả lời

5
IList<string> list = new List<string> {"test1", "test2", "test3"} 
8

Trong C# 3, bạn có thể làm:

IList<string> l = new List<string> { "test1", "test2", "test3" }; 

này sử dụng cú pháp thu initializer mới trong C# 3.

Trong C# 2, tôi sẽ chỉ cần sử dụng thứ hai của bạn Tùy chọn.

+0

nitpick: bộ sưu tập initializer, không phản đối initializer. – Timwi

4

Bạn có thể đơn giản hóa dòng mã đó một chút trong C# bằng cách sử dụng collection initialiser.

var lst = new List<string> {"test1","test2","test3"}; 
5

Bạn có thể thả new string[] phần:

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

Nếu bạn đang tìm cách để giảm sự lộn xộn, hãy xem xét

var lst = new List<string> { "foo", "bar" }; 

này sử dụng hai tính năng của C# 3.0: suy luận kiểu (các var từ khóa) và bộ khởi tạo bộ sưu tập cho danh sách.

Ngoài ra, nếu bạn có thể làm gì với một mảng, điều này thậm chí còn ngắn hơn (bởi một lượng nhỏ):

var arr = new [] { "foo", "bar" }; 
+1

Tôi thường sẽ không chọn cấu trúc dữ liệu của mình dựa trên cấu trúc nào có ít ký tự hơn để khởi tạo ... – Harrichael

+0

@Harrichael Đúng, và cũng không phải I. Nhưng trừ khi bạn cần một danh sách, không có lý do gì để sử dụng nó. –

-5

Một danh sách các giá trị một cách nhanh chóng? Hoặc thậm chí một danh sách các đối tượng!

Tôi chỉ là một người mới bắt đầu tại ngôn ngữ C# nhưng tôi thích sử dụng

  • Hashtable
  • ArrayList
  • DataTable
  • Datasets

, vv

Có chỉ có quá nhiều cách để lưu trữ các mục

1

Bạn có thể tạo chung chung, phương pháp tĩnh helper để tạo ra danh sách:

internal static class List 
{ 
    public static List<T> Of<T>(params T[] args) 
    { 
     return new List<T>(args); 
    } 
} 

Và sau đó sử dụng là rất nhỏ gọn:

List.Of("test1", "test2", "test3") 
Các vấn đề liên quan