Maneira rápida de criar uma lista de valores em C #?


106

Estou procurando uma maneira rápida de criar uma lista de valores em C #. Em Java, uso frequentemente o snippet abaixo:

List<String> l = Arrays.asList("test1","test2","test3");

Existe algum equivalente em C # além do óbvio abaixo?

IList<string> l = new List<string>(new string[] {"test1","test2","test3"});

Respostas:



19

Se você está procurando reduzir a desordem, considere

var lst = new List<string> { "foo", "bar" };

Isso usa dois recursos do C # 3.0: inferência de tipo (a varpalavra - chave) e o inicializador de coleção para listas.

Como alternativa, se você puder se contentar com uma matriz, isso é ainda mais curto (por uma pequena quantidade):

var arr = new [] { "foo", "bar" };

2
Eu normalmente não escolheria minhas estruturas de dados com base nas quais leva menos caracteres para inicializar ...
Harrichael

1
@Harrichael Certo, e nem eu. Mas a menos que você precise de uma lista, não há razão para usar uma.
Konrad Rudolph

10

Em C # 3, você pode fazer:

IList<string> l = new List<string> { "test1", "test2", "test3" };

Isso usa a nova sintaxe do inicializador de coleção em C # 3.

Em C # 2, eu usaria apenas sua segunda opção.


Nitpick: inicializador de coleção, não inicializador de objeto.
Timwi

8
IList<string> list = new List<string> {"test1", "test2", "test3"}

5

Você pode largar a new string[]peça:

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


3

Você pode fazer isso com

var list = new List<string>{ "foo", "bar" };

Aqui estão algumas outras instâncias comuns de outras estruturas de dados comuns:

Dicionário

var dictionary = new Dictionary<string, string> 
{
    { "texas",   "TX" },
    { "utah",    "UT" },
    { "florida", "FL" }
};

Lista de matrizes

var array = new string[] { "foo", "bar" };

Fila

var queque = new Queue<int>(new[] { 1, 2, 3 });

Pilha

var queque = new Stack<int>(new[] { 1, 2, 3 });

Como você pode ver, na maioria dos casos, é apenas adicionar os valores entre chaves ou instanciar uma nova matriz seguida por chaves e valores.


1

Você pode criar um método estático genérico auxiliar para criar a lista:

internal static class List
{
    public static List<T> Of<T>(params T[] args)
    {
        return new List<T>(args);
    }
}

E então o uso é muito compacto:

List.Of("test1", "test2", "test3")

1

Se você deseja criar uma lista digitada com valores, aqui está a sintaxe.

Supondo uma classe de aluno como

public class Student {
   public int StudentID { get; set; }
   public string StudentName { get; set; }
 }   

Você pode fazer uma lista como esta:

IList<Student> studentList = new List<Student>() { 
                new Student(){ StudentID=1, StudentName="Bill"},
                new Student(){ StudentID=2, StudentName="Steve"},
                new Student(){ StudentID=3, StudentName="Ram"},
                new Student(){ StudentID=1, StudentName="Moin"}
            };

-5

Uma lista de valores rapidamente? Ou mesmo uma lista de objetos!

Sou apenas um iniciante na linguagem C #, mas gosto de usar

  • Hashtable
  • Arraylist
  • Tabela de dados
  • Conjuntos de dados

etc.

Existem muitas maneiras de armazenar itens

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.