C # 'da bir değer listesi oluşturmanın hızlı yolu?


108

C # 'da bir değerler listesi oluşturmanın hızlı bir yolunu arıyorum. Java'da sık sık aşağıdaki parçacığı kullanıyorum:

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

Aşağıdakinin dışında C # 'da herhangi bir eşdeğeri var mı?

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

Yanıtlar:



19

Dağınıklığı azaltmak istiyorsanız,

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

Bu, C # 3.0'ın iki özelliğini kullanır: tür çıkarımı ( varanahtar sözcük) ve listeler için koleksiyon başlatıcı.

Alternatif olarak, bir dizi ile idare edebiliyorsanız, bu daha da kısadır (küçük bir miktar ile):

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

2
Veri yapılarımı, başlatmak için daha az karakter gerektiren hangisine bağlı olarak
seçmezdim

1
@Harrichael Doğru, ben de değilim. Ama bir listeye ihtiyacın olmadıkça, bir tane kullanmak için bir sebep yok.
Konrad Rudolph

10

C # 3'te şunları yapabilirsiniz:

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

Bu, C # 3'teki yeni koleksiyon başlatıcı sözdizimini kullanır.

C # 2'de, sadece ikinci seçeneğinizi kullanırdım.


Nitpick: koleksiyon başlatıcı, nesne başlatıcı değil.
Timwi


5

Parçayı bırakabilirsiniz new string[]:

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


3

Bunu ile yapabilirsin

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

Diğer yaygın Veri Yapılarının diğer bazı yaygın örnekleri şunlardır:

Sözlük

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

Dizi listesi

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

Kuyruk

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

Yığın

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

Çoğu durumda görebileceğiniz gibi, bu yalnızca değerleri küme parantezleri içinde eklemek veya yeni bir dizinin ardından küme parantezleri ve değerleri başlatmaktır.


1

Liste oluşturmak için yardımcı genel, statik yöntem oluşturabilirsiniz:

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

Ve sonra kullanım çok kompakttır:

List.Of("test1", "test2", "test3")

1

Değerlerle yazılı bir liste oluşturmak istiyorsanız, sözdizimi burada.

Gibi bir Öğrenci sınıfı varsayarsak

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

Bunun gibi bir liste yapabilirsiniz:

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"}
            };

Ve ()sonrasında s'ye bile ihtiyacınız yok . new List<Student>new Student
schlingel

-5

Hızla bir değer listesi? Veya bir nesne listesi bile!

Ben sadece C # dilinde yeni başlayan biriyim ama kullanmayı seviyorum

  • Hashtable
  • Dizi listesi
  • Veri tablosu
  • Veri kümeleri

vb.

Öğeleri saklamanın çok fazla yolu var

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.