Cara menginisialisasi daftar string (Daftar <string>) dengan banyak nilai string


358

Bagaimana mungkin menginisialisasi (dengan inisialisasi C #) daftar string? Saya sudah mencoba dengan contoh di bawah ini tetapi tidak berfungsi.

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

ada contoh di sini untuk daftar multidimensi dalam jawaban untuk pertanyaan ini stackoverflow.com/questions/34473358/…
barlop

Jawaban:


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

150
Saya tidak berpikir ada alasan bagus untuk menginisialisasi array string di sini untuk membuat objek ini. Siapa pun yang melihat, silakan gunakan salah satu jawaban lain.
Robert Smith

2
@Ulicliced ​​dan @Padel punya jawaban imo yang lebih benar. Tidak perlu menyampaikan newapa pun jika Anda inisialisasi dengan{ }
Don Cheadle

Untuk C ++ CLI itu seperti:Collections::Generic::List<int>^ mylist = gcnew Collections::Generic::List<int>(gcnew array<int>{0, 1, 2, 3, 4})
Rostfrei

@ Bob mengapa? karena mengalokasikan new String[]tidak efisien?
Dylan Czenski

8
@ DylanChensky Saya akan mengatakan sebagai aturan umum, melakukan sesuatu yang tidak perlu tidak efisien Memang, contoh yang satu ini mungkin bukan masalah besar, tetapi bayangkan jika kode Anda dipenuhi dengan barang-barang seperti ini. Ini bisa membuat perbedaan besar secara keseluruhan, terutama dalam hal penggunaan memori.
Robert Smith

557

Hapus saja ()di bagian akhir.

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

4
@Oded: msdn.microsoft.com/en-us/library/bb384062.aspx " Penginisialisasi koleksi"
Lucero

Apakah Anda merujuk ke versi tertentu dari .NET / C #? Sejauh yang saya tahu pekerjaan ini dari v3.5 dan yang lebih baru. Tidak tahu tentang 2.0 karena saya belum menggunakannya untuk sementara waktu ...
Padel

1
asp.net 2.0 btw Saya mendapatkan kesalahan setelah {-> Kesalahan 7 Ekspresi baru membutuhkan () atau [] setelah mengetik
Bilgin Kılıç

4
Dalam 2,0 Anda harus menggunakannya seperti ini: List<string> optionList = new List<string>() { "AdditionalCardPersonAdressType", /* rest of elements */ };. Perhatikan ()di sini: new List<string>().
Padel

3
Ini adalah fitur bahasa C # 3 dan tidak ada hubungannya dengan versi kerangka kerja yang Anda gunakan. Jika Anda masih menggunakan Visual Studio 2005 Anda tidak akan dapat menggunakan fitur ini.
Phil Gan

145

Anda belum benar-benar mengajukan pertanyaan, tetapi kodenya seharusnya

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

yaitu tidak ada trailing () setelah daftar.


Kesalahan 7 Ekspresi baru membutuhkan () atau [] setelah mengetik
Bilgin Kılıç

2
@blgnklc, karena Anda menggunakan C # 2 yang tidak mendukung fitur ini.
Phil Gan

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

Di atas dua adalah cara terpendek, silakan lihat https://www.dotnetperls.com/list


1
Apakah ini lebih disukai daripada jawaban yang diterima? Tampaknya lebih sederhana, tanpa perlu perantarastring[]
Ehtesh Choudhury

var animals = new List<string> { "bird", "dog" };tidak disarankan dalam jawaban yang diterima. Selanjutnya (new string[]adalah perintah tambahan dalam jawaban yang diterima yang dapat dihindari.
Sujoy

14

Fungsi Anda baik-baik saja tetapi tidak berfungsi karena Anda meletakkan ()setelah yang terakhir }. Jika Anda memindahkan ()ke atas tepat di sebelah new List<string>()kesalahan berhenti.

Contoh di bawah ini:

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

7

Ini adalah bagaimana Anda menginisialisasi dan juga Anda dapat menggunakan List.Add () jika Anda ingin membuatnya lebih dinamis.

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

Dengan cara ini, jika Anda mengambil nilai dari IO, Anda bisa menambahkannya ke daftar yang dialokasikan secara dinamis.


2

Pindahkan kurung bundar seperti ini:

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

0

Salah satu fitur yang sangat keren adalah bahwa initializer daftar berfungsi dengan baik dengan kelas kustom juga: Anda hanya perlu mengimplementasikan antarmuka IEnumerable dan memiliki metode yang disebut Tambah .

Jadi misalnya jika Anda memiliki kelas khusus seperti ini:

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();
    }
}

ini akan bekerja:

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

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

3
Silakan tambahkan beberapa penjelasan untuk jawaban Anda
mechnicov

Maaf, tetapi pertanyaannya adalah tentang menginisialisasi daftar dengan beberapa nilai. Ini menginisialisasi string dan MAKA itu menambahkan nilai, bukan kasus yang sama.
c-chavez

-8

Ini adalah bagaimana Anda akan melakukannya.

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

Jangan Lupa menambahkan

using System.Collections.Generic;

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.