Cara cepat untuk membuat daftar nilai di C #?

106

Saya mencari cara cepat untuk membuat daftar nilai di C #. Di Java saya sering menggunakan potongan di bawah ini:

List<String> l = Arrays.asList("test1","test2","test3");

Apakah ada padanan dalam C # selain yang jelas di bawah ini?

IList<string> l = new List<string>(new string[] {"test1","test2","test3"});
Piotr Czapla
sumber

Jawaban:

19

Jika Anda ingin mengurangi kekacauan, pertimbangkan

var lst = new List<string> { "foo", "bar" };

Ini menggunakan dua fitur C # 3.0: jenis inferensi ( varkata kunci) dan penginisialisasi koleksi untuk daftar.

Alternatifnya, jika Anda bisa puas dengan sebuah array, ini bahkan lebih pendek (dengan jumlah yang kecil):

var arr = new [] { "foo", "bar" };
Konrad Rudolph
sumber
2
Saya biasanya tidak akan memilih struktur data saya berdasarkan mana yang membutuhkan lebih sedikit karakter untuk diinisialisasi ...
Harrichael
1
@Harrichael Benar, dan saya juga tidak. Tetapi kecuali Anda membutuhkan daftar, tidak ada alasan untuk menggunakannya.
Konrad Rudolph
10

Di C # 3, Anda dapat melakukan:

IList<string> l = new List<string> { "test1", "test2", "test3" };

Ini menggunakan sintaks penginisialisasi koleksi baru di C # 3.

Dalam C # 2, saya hanya akan menggunakan opsi kedua Anda.

Reed Copsey
sumber
Nitpick: penginisialisasi koleksi, bukan penginisialisasi objek.
Timwi
8
IList<string> list = new List<string> {"test1", "test2", "test3"}
Matt Grande
sumber
5

Anda dapat menjatuhkan new string[]bagian:

List<string> values = new List<string> { "one", "two", "three" };
John Rasch
sumber
4

Anda dapat menyederhanakan baris kode itu sedikit di C # dengan menggunakan penginisialisasi koleksi .

var lst = new List<string> {"test1","test2","test3"};
Noldorin
sumber
3

Anda bisa melakukannya dengan

var list = new List<string>{ "foo", "bar" };

Berikut beberapa contoh umum lainnya dari Struktur Data umum lainnya:

Kamus

var dictionary = new Dictionary<string, string> 
{
    { "texas",   "TX" },
    { "utah",    "UT" },
    { "florida", "FL" }
};

Daftar array

var array = new string[] { "foo", "bar" };

Antre

var queque = new Queue<int>(new[] { 1, 2, 3 });

Tumpukan

var queque = new Stack<int>(new[] { 1, 2, 3 });

Seperti yang Anda lihat untuk sebagian besar kasus, ini hanya menambahkan nilai dalam tanda kurung kurawal, atau membuat instance array baru diikuti dengan tanda kurung kurawal dan nilai.

Braden Brown
sumber
1

Anda dapat membuat helper generik, metode statis untuk membuat daftar:

internal static class List
{
    public static List<T> Of<T>(params T[] args)
    {
        return new List<T>(args);
    }
}

Dan penggunaannya sangat ringkas:

List.Of("test1", "test2", "test3")
Konrad Kokosa
sumber
1

Jika Anda ingin membuat daftar yang diketik dengan nilai, berikut sintaksnya.

Menganggap sekelas pelajar seperti

public class Student {
   public int StudentID { get; set; }
   public string StudentName { get; set; }
 }   

Anda bisa membuat daftarnya seperti ini:

IList<Student> studentList = new List<Student>() { 
                new Student(){ StudentID=1, StudentName="Bill"},
                new Student(){ StudentID=2, StudentName="Steve"},
                new Student(){ StudentID=3, StudentName="Ram"},
                new Student(){ StudentID=1, StudentName="Moin"}
            };
FoxDeploy
sumber
-5

Daftar nilai dengan cepat? Atau bahkan daftar objek!

Saya hanya pemula di bahasa C # tapi saya suka menggunakan

  • Hashtable
  • Arraylist
  • Tabel data
  • Set data

dll.

Ada terlalu banyak cara untuk menyimpan item

Brad
sumber