Bir C # Listesini ilan ettiğim aynı satırda nasıl başlatabilirim. (IEnumerable string Koleksiyon Örneği)


110

Test kodumu yazıyorum ve şunu yazmak istemiyorum:

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

Yazmayı çok isterim

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

Ancak {"bir", "iki", "üç"} bir "IEnumerable dize Koleksiyonu" değildir. "IEnumerable dize Koleksiyonu" nu kullanarak bunu tek satırda nasıl başlatabilirim?

Yanıtlar:


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

Esasen sözdizimi şöyledir:

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

Derleyici tarafından çevrilen

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

Bu parantez içermeyen yöntemi beğendim, bu hangi c # sürümüyle başladı?
SilverbackNet

9
Bu değil oldukça az değil genel olarak, tercüme. Değişkene atama, tüm çağrılar yapıldıktan sonraAdd gerçekleşir - sanki list = tmp;sonunda geçici bir değişken kullanıyormuş gibi . Bir değişkenin değerini yeniden atıyorsanız bu önemli olabilir .
Jon Skeet

Otomatik Özellikler ve Nesne Başlatıcıları .NET ile tanıtıldı 3 İnanıyorum ki, aynı Framework sürümü, sadece LINQ'yu desteklemek için güncellenmiş bir derleyici.
Matthew Abbott

@Jon, Şerefe, o kısmı hiç bilmiyordum. : D
Matthew Abbott

@Jon Skeet: "... Bir değişkenin değerini yeniden atıyorsanız bu önemli olabilir." bu söz hakkında biraz daha açıklayabilir misin?
Tony

17

Kodu şu şekilde değiştirin:

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

veya

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

"List <string> nameslist = new List <string> (yeni [] {" bir "," iki "," üç "});" ikinci satırını ne zaman kullanmanın amacı nedir? Ayrıca ikinci sözdiziminde "yeni [] {...}" nin anlamı nedir? Neden parantez [] ile birlikte yeni anahtar kelime kullanılır ???
Tony



3

Parantezleri kaldırın:

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

3

Hangi C # sürümünü kullandığınıza bağlıdır, sürüm 3.0'dan itibaren kullanabileceğiniz ...

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

1

Bunun int, long ve string değerleri için çalışacağını düşünüyorum.

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


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

1

Bu tek yol.

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

Bu başka bir yol.

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

list2.Add(1);

list2.Add(2);

Aynı dizeler için de geçerli.

Örneğin:

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