Probablemente sea realmente simple: estoy comenzando con C # y necesito agregar valores a una matriz, por ejemplo:
int[] terms;
for(int runs = 0; runs < 400; runs++)
{
terms[] = runs;
}
Para aquellos que han usado PHP, esto es lo que estoy tratando de hacer en C #:
$arr = array();
for ($i = 0; $i < 10; $i++) {
$arr[] = $i;
}
Respuestas:
Puedes hacerlo de esta manera:
Alternativamente, puede usar Listas: la ventaja de las listas es que no necesita saber el tamaño de la matriz al crear instancias de la lista.
Editar: a) para los bucles en la Lista <T> son un poco más de 2 veces más baratos que los bucles foreach en la Lista <T>, b) El bucle en la matriz es aproximadamente 2 veces más barato que el bucle en la Lista <T>, c) el uso de la matriz para es 5 veces más barato que el bucle en la Lista <T> usando foreach (que la mayoría de nosotros hacemos).
fuente
new int[]{}
!!!!!OutOfRangeException
tan pronto como ejecute el código. Las matrices deben inicializarse con el tamaño que va a utilizar, reservan todo el espacio al principio, lo que hace que sean muy rápidas, pero no es posible cambiar su tamaño.Si está escribiendo en C # 3, puede hacerlo con una sola línea:
Este fragmento de código supone que tiene una directiva de uso para System.Linq en la parte superior de su archivo.
Por otro lado, si está buscando algo que se pueda cambiar de tamaño dinámicamente, como parece ser el caso de PHP (nunca lo aprendí), es posible que desee usar una Lista en lugar de un int [] . Así es como se vería ese código:
Sin embargo, tenga en cuenta que no puede simplemente agregar un elemento 401 estableciendo los términos [400] en un valor. En su lugar, debería llamar a Add (), así:
fuente
Usando el método de Linq , Concat hace esto simple
resultado 3,4,2
fuente
Aquí se proporcionan respuestas sobre cómo hacerlo utilizando una matriz.
Sin embargo, C # tiene una cosa muy útil llamada System.Collections :)
Las colecciones son alternativas sofisticadas al uso de una matriz, aunque muchas de ellas usan una matriz internamente.
Por ejemplo, C # tiene una colección llamada Lista que funciona de manera muy similar a la matriz PHP.
fuente
Usar una Lista como intermediario es la forma más fácil, como han descrito otros, pero dado que su entrada es una matriz y no solo desea mantener los datos en una Lista, supongo que podría estar preocupado por el rendimiento.
El método más eficiente es asignar una nueva matriz y luego usar Array.Copy o Array.CopyTo. Esto no es difícil si solo desea agregar un elemento al final de la lista:
También puedo publicar código para un método de extensión Insert que toma un índice de destino como entrada, si lo deseo. Es un poco más complicado y utiliza el método estático Array. Copie 1-2 veces.
fuente
Basado en la respuesta de Thracx (no tengo suficientes puntos para responder):
Esto permite agregar más de un elemento a la matriz, o simplemente pasar una matriz como parámetro para unir dos matrices.
fuente
Primero debe asignar la matriz:
fuente
Así sería como lo codificaría.
fuente
Las matrices de C # tienen una longitud fija y siempre están indexadas. Ve con la solución de Motti:
Tenga en cuenta que esta matriz es una matriz densa, un bloque contiguo de 400 bytes donde puede soltar cosas. Si desea una matriz de tamaño dinámico, use una Lista <int>.
Ni int [] ni List <int> son una matriz asociativa, eso sería un Diccionario <> en C #. Tanto las matrices como las listas son densas.
fuente
fuente
No puede simplemente agregar un elemento a una matriz fácilmente. Puede configurar el elemento en una posición dada como se describe en fallen888 , pero recomiendo usar a
List<int>
o aCollection<int>
en su lugar, y usarloToArray()
si necesita convertirlo en una matriz.fuente
Si realmente necesita una matriz, lo siguiente es probablemente el más simple:
fuente
Agregaré esto para otra variante. Prefiero este tipo de líneas de codificación funcional más.
fuente
Si no conoce el tamaño de la matriz o ya tiene una matriz existente a la que está agregando. Puedes hacer esto de dos maneras. El primero es usar un genérico
List<T>
: para hacer esto, querrá convertir la matriz a ayvar termsList = terms.ToList();
usar el método Agregar. Luego, cuando termine, use elvar terms = termsList.ToArray();
método para volver a convertirlo en una matriz.La segunda forma es cambiar el tamaño de la matriz actual:
Si está utilizando .NET 3.5
Array.Add(...);
Ambos le permitirán hacerlo dinámicamente. Si va a agregar muchos elementos, simplemente use a
List<T>
. Si solo se trata de un par de elementos, tendrá un mejor rendimiento al cambiar el tamaño de la matriz. Esto se debe a que recibes más golpes para crear elList<T>
objeto.Tiempos en garrapatas:
3 artículos
400 artículos
fuente
Solo un enfoque diferente:
fuente
=
lugar del operador de comparación? Puedes omitir la variable de lucha y usarlaruns < 400
para controlar el ciclo.Un enfoque es llenar una matriz a través de LINQ
si quieres llenar una matriz con un elemento, simplemente puedes escribir
Además, si desea llenar una matriz con múltiples elementos, puede usar el código anterior en un bucle
fuente
fuente
fuente
fuente
Para agregar los valores de lista a la matriz de cadenas usando C # sin usar el método ToArray ()
La salida de la matriz de valores contiene:
uno
dos
Tres
cuatro
cinco
fuente