¿Cómo inicializo una matriz vacía en C#?

Resuelto yogesh asked hace 12 años • 15 respuestas

¿Es posible crear una matriz vacía sin especificar el tamaño?

Por ejemplo, creé:

String[] a = new String[5];

¿Podemos crear la matriz de cadenas anterior sin el tamaño?

yogesh avatar Jan 04 '12 19:01 yogesh
Aceptado

Si va a utilizar una colección cuyo tamaño no conoce de antemano, existen mejores opciones que las matrices.

Utilice a en List<string>su lugar: le permitirá agregar tantos elementos como necesite y, si necesita devolver una matriz, llame ToArray()a la variable.

var listOfStrings = new List<string>();

// do stuff...

string[] arrayOfStrings = listOfStrings.ToArray();

Si debe crear una matriz vacía, puede hacer esto:

string[] emptyStringArray = new string[0]; 
Oded avatar Jan 04 '2012 12:01 Oded

En .NET 4.6, la forma preferida es utilizar un nuevo método Array.Empty:

String[] a = Array.Empty<string>();

La implementación es concisa y utiliza cómo se comportan los miembros estáticos en clases genéricas en .Net :

public static T[] Empty<T>()
{
    return EmptyArray<T>.Value;
}

// Useful in number of places that return an empty byte array to avoid
// unnecessary memory allocation.
internal static class EmptyArray<T>
{
    public static readonly T[] Value = new T[0];
}

(código relacionado con el contrato eliminado para mayor claridad)

Ver también:

  • Array.Emptycódigo fuente en fuente de referencia
  • Introducción aArray.Empty<T>()
  • Marc Gravell - Asignación, Asignación, Asignación : mi publicación favorita sobre pequeñas asignaciones ocultas.
Kobi avatar Nov 04 '2015 06:11 Kobi