Как я могу инициализировать C # List в той же строке, которую я объявляю. (Пример коллекции IEnumerable string) - PullRequest
91 голосов
/ 14 декабря 2010

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

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

Ответы [ 6 ]

148 голосов
/ 14 декабря 2010
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");
16 голосов
/ 14 декабря 2010

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

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

или

List<string> nameslist = new List<string>(new[] {"one", "two", "three"});
6 голосов
/ 14 декабря 2010

Просто потеряйте скобки:

var nameslist = new List<string> { "one", "two", "three" };
3 голосов
/ 14 декабря 2010

Это зависит от того, какую версию C # вы используете, начиная с версии 3.0, которую вы можете использовать ...

List<string> nameslist = new List<string> { "one", "two", "three" };
3 голосов
/ 14 декабря 2010

Снять скобки:

List<string> nameslist = new List<string> {"one", "two", "three"};
3 голосов
/ 14 декабря 2010
List<string> nameslist = new List<string> {"one", "two", "three"} ?
...