¿Existe algún método para crear una matriz dinámica en C #?
¿Existe algún método para crear una matriz dinámica en C #?
Respuestas:
Eche un vistazo a las listas genéricas .
dynamic[] msdn.microsoft.com/en-GB/library/dd264736.aspx (matriz de tipos dinámicos) o ExpandoObject msdn.microsoft.com/ en-us / library /… Podría -1 la respuesta para no mencionarlos
Ampliando la respuesta de Chris y Migol con una muestra de código.
Usando una matriz
Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
Usando una lista genérica. Bajo el capó, la clase List <T> usa una matriz para el almacenamiento, pero lo hace de una manera que le permite crecer de manera eficiente.
List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];
A veces, se prefieren las matrices simples a las listas genéricas, ya que son más convenientes (mejor rendimiento para cálculos costosos, aplicaciones de álgebra numérica, por ejemplo, o para intercambiar datos con software de estadísticas como R o Matlab)
En este caso, puede usar el método ToArray () después de iniciar su Lista dinámicamente
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
string[] array = list.ToArray();
Por supuesto, esto tiene sentido solo si el tamaño de la matriz nunca se conoce ni se fija ex ante . si ya conoce el tamaño de su matriz en algún punto del programa , es mejor iniciarlo como una matriz de longitud fija. (Si recupera datos de un ResultSet, por ejemplo, puede contar su tamaño e iniciar una matriz de ese tamaño, de forma dinámica)
Ejemplo de matriz dinámica:
Console.WriteLine("Define Array Size? ");
int number = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter numbers:\n");
int[] arr = new int[number];
for (int i = 0; i < number; i++)
{
arr[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < arr.Length; i++ )
{
Console.WriteLine("Array Index: "+i + " AND Array Item: " + arr[i].ToString());
}
Console.ReadKey();
Utilice la lista de matrices que en realidad es una matriz de implementación. Inicialmente toma una matriz de tamaño 4 y cuando se llena, se crea una nueva matriz con su tamaño doble y los datos de la primera matriz se copian en la segunda matriz, ahora el nuevo elemento se inserta en una nueva matriz. Además, el nombre de la segunda matriz crea un alias de la primera para que se pueda acceder a ella con el mismo nombre que la anterior y la primera matriz se elimine.
Esta respuesta parece ser la respuesta que está buscando. ¿Por qué no puedo hacer esto? Dynamic x = new ExpandoObject {Foo = 12, Bar = "doce"}
Lea ExpandoObjectaquí https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx
Y el dynamictipo aquí https://msdn.microsoft.com/en-GB/library/dd264736.aspx