Как я могу инициализировать список C # в той же строке, в которой я его объявляю. (Пример коллекции строк IEnumerable)


110

Я пишу свой тестовый код и не хочу писать:

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

Ответы:


170
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.
Мэтью Эбботт,

@Jon, Ура, я никогда не знал этого. : D
Мэтью Эбботт

@Jon Skeet: «... Это может быть важно, если вы переназначаете значение переменной». Вы можете подробнее объяснить это замечание?
Тони

17

Измените код на

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

или

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

какова цель использования второй строки "List <string> nameslist = new List <string> (new [] {" one "," two "," three "});" когда мы можем ее использовать? Также, что означает "новый [] {...}" во втором синтаксисе? Почему новое ключевое слово используется вместе с круглой скобкой [] ???
Тони




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

1

Это один способ.

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.