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"});
Piotr Czapla
fonte

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" };
Konrad Rudolph
fonte
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.

Reed Copsey
fonte
Nitpick: inicializador de coleção, não inicializador de objeto.
Timwi
8
IList<string> list = new List<string> {"test1", "test2", "test3"}
Matt Grande
fonte
5

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

List<string> values = new List<string> { "one", "two", "three" };
John Rasch
fonte
4

Você pode simplificar ligeiramente essa linha de código em C # usando um inicializador de coleção .

var lst = new List<string> {"test1","test2","test3"};
Noldorin
fonte
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.

Braden Brown
fonte
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")
Konrad Kokosa
fonte
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"}
            };
FoxDeploy
fonte
-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

Brad
fonte