Bagaimana saya bisa menginisialisasi Daftar C # di baris yang sama saya mendeklarasikannya. (Contoh Koleksi string yang tak terhitung banyaknya)


107

Saya menulis kode tes saya dan saya tidak ingin menulis:

List<string> nameslist = new List<string>();
nameslist.Add("one");
nameslist.Add("two");
nameslist.Add("three");

Saya ingin sekali menulis

List<string> nameslist = new List<string>({"one", "two", "three"});

Namun {"satu", "dua", "tiga"} bukanlah "Koleksi string IEnumerable". Bagaimana saya bisa menginisialisasi ini dalam satu baris menggunakan IEnumerable string Collection "?

Jawaban:


168
var list = new List<string> { "One", "Two", "Three" };

Intinya sintaksnya adalah:

new List<Type> { Instance1, Instance2, Instance3 };

Yang diterjemahkan oleh kompilator sebagai

List<string> list = new List<string>();
list.Add("One");
list.Add("Two");
list.Add("Three");

Saya suka metode tanpa tanda kurung ini, dengan versi c # apa itu dimulai?
SilverbackNet

9
Itu tidak cukup diterjemahkan ke dalam itu, setidaknya tidak secara umum. Penugasan ke variabel terjadi setelah semua Addpanggilan dilakukan - seolah-olah ia menggunakan variabel sementara, dengan list = tmp;di bagian akhir. Ini bisa menjadi penting jika Anda menetapkan kembali nilai variabel.
Jon Skeet

Properti Otomatis dan Penginisialisasi Objek diperkenalkan dengan .NET 3 Saya percaya, ini adalah versi Kerangka yang sama, hanya kompiler yang diperbarui untuk mendukung LINQ.
Matthew Abbott

@ Jon, Cheers, saya tidak pernah tahu bagian itu. : D
Matthew Abbott

@ Jon Skeet: "... Ini bisa menjadi penting jika Anda menetapkan kembali nilai variabel." dapatkah Anda menjelaskan lebih banyak tentang pernyataan ini?
Tony

17

Ubah kode menjadi

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

atau

List<string> nameslist = new List<string>(new[] {"one", "two", "three"});

apa tujuan menggunakan baris kedua "List <string> nameslist = new List <string> (new [] {" one "," two "," three "});" kapan kita bisa menggunakannya? Juga apa arti dari "baru [] {...}" dalam sintaks kedua? Mengapa kata kunci baru digunakan bersama dengan tanda kurung [] ???
Tony



3

Hapus tanda kurung:

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

3

Itu tergantung versi C # yang Anda gunakan, dari versi 3.0 dan seterusnya Anda dapat menggunakan ...

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

1

Saya pikir ini akan bekerja untuk nilai int, long dan string.

List<int> list = new List<int>(new int[]{ 2, 3, 7 });


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

0

Ini salah satu cara.

List<int> list = new List<int>{ 1, 2, 3, 4, 5 };

Ini cara lain.

List<int> list2 = new List<int>();

list2.Add(1);

list2.Add(2);

Sama halnya dengan string.

Misalnya:

List<string> list3 = new List<string> { "Hello", "World" };
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.