Як я можу ініціалізувати список C # у тому ж рядку, декларую його. (Приклад колекції безлічі рядків)


107

Я пишу свій тестовий код, і я не хочу, щоб wo пише:

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

Я б хотів писати

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

Однак {"one", "two", "three"} не є "Колекцією рядків IEnumerable". Як я можу ініціалізувати це в одному рядку за допомогою колекції рядків IEnumerable "?

Відповіді:


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

По суті синтаксис:

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

Що перекладено компілятором як

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

Мені подобається цей метод без скобок, з якої версії c # це почалося?
SilverbackNet

9
Це не зовсім перекладено на це, принаймні, не взагалі. Присвоєння змінній відбувається після того, Addяк були здійснені всі дзвінки - це так, ніби вона використовує тимчасову змінну, list = tmp;в кінці. Це може бути важливо, якщо ви перепризначаєте значення змінної.
Джон Скіт

Автоматичні властивості та ініціалізатори об'єктів були представлені з .NET 3 Я вважаю, це та сама версія Framework, лише оновлений компілятор для підтримки LINQ.
Меттью Еббот

@ Джон, ура, я ніколи не знав цієї частини. : D
Меттью Еббот

@Jon Skeet: "... Це може бути важливо, якщо ви перепризначаєте значення змінної." чи можете ви пояснити трохи більше цього зауваження?
Тоні

17

Змініть код на

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

або

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

яка мета використання другого рядка "Список <string> імен = новий список <string> (новий [] {" один "," два "," три "});" коли ми можемо його використовувати? Також, що означає "новий [] {...}" у другому синтаксисі? Чому нове ключове слово використовується разом із дужками [] ???
Тоні




3

Це залежить від того, яку версію C # ви використовуєте, від версії 3.0 і далі ви можете використовувати ...

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

1

Я думаю, що це буде працювати для значень int, long та string.

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


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

0

Це один із способів.

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

Це ще один спосіб.

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

list2.Add(1);

list2.Add(2);

Те саме стосується струн.

Наприклад:

List<string> list3 = new List<string> { "Hello", "World" };
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.