Cách nhanh chóng để tạo danh sách các giá trị trong C #?


106

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ã dưới đây:

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

Có bất kỳ tương đương nào trong C # ngoài điều hiển nhiên bên dưới không?

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

Câu trả lời:



19

Nếu bạn đang tìm cách giảm bớt sự lộn xộn, hãy cân nhắc

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

Điều này sử dụng hai tính năng của C # 3.0: kiểu suy luận ( vartừ 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ể thực hiện với một mảng, điều này thậm chí còn ngắn hơn (bằng một số lượng nhỏ):

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

2
Tôi sẽ không thường được lựa chọn cấu trúc dữ liệu của tôi dựa trên cái nào có nhân vật ít hơn để khởi tạo ...
Harrichael

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

10

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

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

Điều này sử dụng cú pháp khởi tạo bộ sưu tập mới trong C # 3.

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


Nitpick: bộ khởi tạo bộ sưu tập, không phải bộ khởi tạo đối tượng.
Timwi


5

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

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


3

Bạn có thể làm điều đó với

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

Dưới đây là một số cách diễn đạt phổ biến khác của các Cấu trúc dữ liệu phổ biến khác:

Từ điển

var dictionary = new Dictionary<string, string> 
{
    { "texas",   "TX" },
    { "utah",    "UT" },
    { "florida", "FL" }
};

Lập danh sách

var array = new string[] { "foo", "bar" };

Xếp hàng

var queque = new Queue<int>(new[] { 1, 2, 3 });

Cây rơm

var queque = new Stack<int>(new[] { 1, 2, 3 });

Như bạn có thể thấy trong phần lớn các trường hợp, nó chỉ đơn thuần là thêm các giá trị trong dấu ngoặc nhọn hoặc khởi tạo một mảng mới theo sau là dấu ngoặc nhọn và giá trị.


1

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

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

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

List.Of("test1", "test2", "test3")

1

Nếu bạn muốn tạo một danh sách đã nhập với các giá trị, đây là cú pháp.

Giả sử một lớp học sinh thích

public class Student {
   public int StudentID { get; set; }
   public string StudentName { get; set; }
 }   

Bạn có thể lập một danh sách như sau:

IList<Student> studentList = new List<Student>() { 
                new Student(){ StudentID=1, StudentName="Bill"},
                new Student(){ StudentID=2, StudentName="Steve"},
                new Student(){ StudentID=3, StudentName="Ram"},
                new Student(){ StudentID=1, StudentName="Moin"}
            };

-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à người mới bắt đầu sử dụng ngôn ngữ C # nhưng tôi thích sử dụng

  • Hashtable
  • Lập danh sách
  • Bảng dữ liệu
  • Bộ dữ liệu

Vân vân.

Có quá nhiều cách để lưu trữ các mặt hàng

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.