Como posso inicializar uma lista C # na mesma linha em que declaro. (Exemplo de coleção de strings de IEnumerable)


107

Estou escrevendo meu código de teste e não quero escrever:

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

Eu adoraria escrever

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

No entanto {"one", "two", "three"} não é uma "Coleção de strings de IEnumerable". Como posso inicializar isso em uma linha usando a coleção de strings IEnumerable "?

Respostas:


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

Essencialmente, a sintaxe é:

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

Que é traduzido pelo compilador como

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

Eu gosto desse método sem parênteses, com qual versão c # ele começou?
SilverbackNet

9
Não é bem traduzido nisso, pelo menos não em geral. A atribuição à variável acontece após todas as Addchamadas terem sido feitas - é como se ela usasse uma variável temporária, com list = tmp;no final. Isso pode ser importante se você estiver reatribuindo o valor de uma variável.
Jon Skeet

Propriedades automáticas e inicializadores de objetos foram introduzidos com o .NET 3, acredito, é a mesma versão do Framework, apenas um compilador atualizado para oferecer suporte ao LINQ.
Matthew Abbott

@Jon, Saúde, nunca conheci essa parte. : D
Matthew Abbott

@Jon Skeet: "... Isso pode ser importante se você estiver reatribuindo o valor de uma variável." você pode explicar um pouco mais sobre esta observação?
Tony

17

Altere o código para

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

ou

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

qual é o propósito de usar a segunda linha "List <string> nameslist = new List <string> (new [] {" one "," two "," three "});" quando podemos usá-la? Além disso, o que significa "novo [] {...}" na segunda sintaxe? Por que nova palavra-chave é usada junto com o parêntese [] ???
Tony



3

Remova os parênteses:

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

3

Depende de qual versão do C # você está usando, da versão 3.0 em diante você pode usar ...

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

1

Eu acho que isso funcionará para valores int, long e string.

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


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

0

Esta é uma maneira.

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

Essa é outra maneira.

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

list2.Add(1);

list2.Add(2);

O mesmo acontece com cordas.

Por exemplo:

List<string> list3 = new List<string> { "Hello", "World" };
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.