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"
}();
Bilgin Kılıç
sumber
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" });
Zenzer
sumber
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 */ };
Padel
sumber
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.

Tidak berbelit-belit
sumber
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

Sujoy
sumber
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"
};
Marcello Mello
sumber
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.

Enye Aaron Shi
sumber
2

Pindahkan kurung bundar seperti ini:

var optionList = new List<string>(){"AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"};
Andrew Kozlov
sumber
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"
}
adospace
sumber
-1
List<string> animals= new List<string>();
animals.Add("dog");
animals.Add("tiger");
raj
sumber
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;

Muhammad Ali
sumber