¿Manera rápida de crear una lista de valores en C #?


106

Estoy buscando una forma rápida de crear una lista de valores en C #. En Java, utilizo con frecuencia el siguiente fragmento:

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

¿Hay algún equivalente en C # aparte del obvio a continuación?

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

Respuestas:



19

Si está buscando reducir el desorden, considere

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

Esto usa dos características de C # 3.0: inferencia de tipos (la varpalabra clave) y el inicializador de colección para listas.

Alternativamente, si puede conformarse con una matriz, esto es aún más corto (por una pequeña cantidad):

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

2
Normalmente, no elegiría mis estructuras de datos en función de cuál necesita menos caracteres para inicializar ...
Harrichael

1
@Harrichael Correcto, y yo tampoco. Pero a menos que necesite una lista, no hay razón para usar una.
Konrad Rudolph

10

En C # 3, puede hacer:

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

Esto usa la nueva sintaxis del inicializador de colección en C # 3.

En C # 2, solo usaría su segunda opción.


Nitpick: inicializador de colección, no inicializador de objeto.
Timwi


5

Puedes soltar la new string[]pieza:

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


3

Puedes hacer eso con

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

A continuación, se muestran algunas otras instancias comunes de otras estructuras de datos comunes:

Diccionario

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

Lista de arreglo

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

Cola

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

Apilar

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

Como puede ver, en la mayoría de los casos, se trata simplemente de agregar los valores entre llaves o de crear una nueva matriz seguida de llaves y valores.


1

Puede crear un método estático genérico auxiliar para crear una lista:

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

Y luego el uso es muy compacto:

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

1

Si desea crear una lista escrita con valores, aquí está la sintaxis.

Asumiendo una clase de Student como

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

Puedes hacer una 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

¿Una lista de valores rápidamente? ¡O incluso una lista de objetos!

Soy solo un principiante en el lenguaje C # pero me gusta usar

  • Tabla de picadillo
  • Lista de arreglo
  • Tabla de datos
  • Conjuntos de datos

etc.

Hay demasiadas formas de almacenar artículos

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.