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 "?

Johannes
sumber

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");
Matthew Abbott
sumber
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"});
Adriaan Stander
sumber
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
6

Hilang saja tanda kurung:

var nameslist = new List<string> { "one", "two", "three" };
Richard Fawcett
sumber
Ups, sepertinya lima orang mengalahkan saya untuk itu.
Richard Fawcett
3
List<string> nameslist = new List<string> {"one", "two", "three"} ?
Romain Meresse
sumber
3

Hapus tanda kurung:

List<string> nameslist = new List<string> {"one", "two", "three"};
Tim Robinson
sumber
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" };
Sam Salisbury
sumber
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" };
Muhammad Awais
sumber
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" };
Min
sumber