Cách khởi tạo danh sách các chuỗi (Danh sách <chuỗi>) với nhiều giá trị chuỗi


358

Làm thế nào có thể khởi tạo (với trình khởi tạo C #) một danh sách các chuỗi? Tôi đã thử với ví dụ dưới đây nhưng nó không hoạt động.

List<string> optionList = new List<string>
{
    "AdditionalCardPersonAddressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
}();

Có một ví dụ ở đây cho một danh sách đa chiều trong câu trả lời cho câu hỏi này stackoverflow.com/questions
432473358/21

Câu trả lời:


464
List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });

149
Tôi không nghĩ có một lý do chính đáng để khởi tạo một chuỗi chuỗi ở đây để tạo đối tượng này. Bất cứ ai đang tìm kiếm, xin vui lòng sử dụng một trong những câu trả lời khác.
Robert Smith

2
@Unsliced ​​và @Padel có nhiều câu trả lời đúng hơn. Không cần phải vượt qua newbất cứ điều gì khác nếu bạn khởi tạo với{ }
Don Cheadle

Đối với C ++ CLI, nó giống như:Collections::Generic::List<int>^ mylist = gcnew Collections::Generic::List<int>(gcnew array<int>{0, 1, 2, 3, 4})
Rostfrei

@Bobrot tại sao? vì phân bổ a new String[]không hiệu quả?
Dylan Cundredki

8
@DylanChensky Tôi muốn nói như một quy tắc chung, làm bất cứ điều gì không cần thiết là không hiệu quả. Cấp, ví dụ này có thể không phải là một vấn đề lớn, nhưng hãy tưởng tượng nếu mã của bạn bị vấy bẩn với các mặt hàng như thế này. Nó có thể tạo ra một sự khác biệt lớn về tổng thể, đặc biệt là khi sử dụng bộ nhớ.
Robert Smith

556

Chỉ cần loại bỏ ()ở cuối.

List<string> optionList = new List<string>
            { "AdditionalCardPersonAdressType", /* rest of elements */ };

4
@Oded: msdn.microsoft.com/en-us/l Library / bb384062.aspx "Bộ khởi tạo bộ sưu tập"
Lucero

Bạn đang đề cập đến một phiên bản cụ thể của .NET / C #? Theo như tôi biết công việc này từ phiên bản 3.5 trở đi. Không biết về 2.0 vì tôi đã không sử dụng nó trong một thời gian ...
Padel

1
asp.net 2.0 btw Tôi gặp lỗi sau {-> Lỗi 7 Biểu thức mới yêu cầu () hoặc [] sau loại
Bilgin Kılıç

4
Trong 2.0, bạn phải sử dụng nó như thế này : List<string> optionList = new List<string>() { "AdditionalCardPersonAdressType", /* rest of elements */ };. Lưu ý ()ở đây : new List<string>().
Padel

3
Đây là một tính năng ngôn ngữ C # 3 và không liên quan gì đến phiên bản của khung công tác bạn đang sử dụng. Nếu bạn vẫn đang sử dụng Visual Studio 2005, bạn sẽ không thể sử dụng tính năng này.
Phil Gan

145

Bạn chưa thực sự hỏi một câu hỏi, nhưng mã phải là

List<string> optionList = new List<string> { "string1", "string2", ..., "stringN"}; 

tức là không có dấu () sau danh sách.


Lỗi 7 Một biểu thức mới yêu cầu () hoặc [] sau loại
Bilgin Kılıç

2
@blgnklc, vì bạn đang sử dụng C # 2 không hỗ trợ tính năng này.
Phil Gan

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

Trên đây là hai cách ngắn nhất, vui lòng xem https://www.dotnetperls.com/list


1
Đây có phải là ưa thích hơn câu trả lời được chấp nhận? Nó có vẻ đơn giản hơn, không cần trung gianstring[]
Ehtesh Choudhury

var animals = new List<string> { "bird", "dog" };đã không được đề xuất trong câu trả lời được chấp nhận. Hơn nữa (new string[]là một lệnh bổ sung trong câu trả lời được chấp nhận có thể tránh được.
Sujoy

14

Chức năng của bạn chỉ hoạt động tốt nhưng không hoạt động vì bạn đặt ()sau cùng }. Nếu bạn di chuyển ()lên trên cùng ngay bên cạnh new List<string>()lỗi dừng.

Mẫu dưới đây:

List<string> optionList = new List<string>()
{
    "AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
};

7

Đây là cách bạn khởi tạo và bạn cũng có thể sử dụng List.Add () trong trường hợp bạn muốn làm cho nó năng động hơn.

List<string> optionList = new List<string> {"AdditionalCardPersonAdressType"};
optionList.Add("AutomaticRaiseCreditLimit");
optionList.Add("CardDeliveryTimeWeekDay");

Theo cách này, nếu bạn đang lấy các giá trị từ IO, bạn có thể thêm nó vào danh sách được phân bổ động.


2

Di chuyển dấu ngoặc tròn như thế này:

var optionList = new List<string>(){"AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"};

0

Một tính năng thực sự thú vị là trình khởi tạo danh sách cũng hoạt động tốt với các lớp tùy chỉnh: bạn chỉ cần thực hiện giao diện IEnumerable và có một phương thức gọi là Thêm .

Vì vậy, ví dụ nếu bạn có một lớp tùy chỉnh như thế này:

class MyCustomCollection : System.Collections.IEnumerable
{
    List<string> _items = new List<string>();

    public void Add(string item)
    {
        _items.Add(item);
    }

    public IEnumerator GetEnumerator()
    {
        return _items.GetEnumerator();
    }
}

cái này sẽ hoạt động:

var myTestCollection = new MyCustomCollection()
{
    "item1",
    "item2"
}

-1
List<string> animals= new List<string>();
animals.Add("dog");
animals.Add("tiger");

3
Vui lòng thêm một số lời giải thích cho câu trả lời của bạn
mechnicov

Xin lỗi, nhưng câu hỏi là về việc khởi tạo một danh sách với nhiều giá trị. Điều này khởi tạo chuỗi và THEN nó thêm các giá trị, không phải cùng trường hợp.
c-chavez

-8

Đây là cách bạn sẽ làm điều đó.

List <string> list1 = new List <string>();

Đừng quên để thêm

using System.Collections.Generic;

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.