suma recorrer matriz matrices llenar imprimir dinamica cuadrada cargar arreglos c# arrays

recorrer - Agregar valores a una matriz de C#



recorrer matriz c# (17)

Basado en la respuesta de Thracx (no tengo suficientes puntos para responder):

public static T[] Add<T>(this T[] target, params T[] items) { // Validate the parameters if (target == null) { target = new T[] { }; } if (items== null) { items = new T[] { }; } // Join the arrays T[] result = new T[target.Length + items.Length]; target.CopyTo(result, 0); items.CopyTo(result, target.Length); return result; }

Esto permite agregar más de un solo elemento a la matriz, o simplemente pasar una matriz como parámetro para unir dos matrices.

Probablemente uno muy simple, estoy empezando 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; }


Las matrices de C # son de longitud fija y siempre indexadas. Ve con la solución de Motti:

int [] terms = new int[400]; for(int runs = 0; runs < 400; runs++) { terms[runs] = value; }

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>.

List<int> terms = new List<int>(); for(int runs = 0; runs < 400; runs ++) { terms.Add(runs); }

Ni int [] ni List <int> es una matriz asociativa, que sería un Dictionary <> en C #. Ambas matrices y listas son densas.


Las respuestas sobre cómo hacerlo utilizando una matriz se proporcionan aquí.

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 de PHP.

using System.Collections.Generic; // Create a List, and it can only contain integers. List<int> list = new List<int>(); for (int i = 0; i < 400; i++) { list.Add(i); }


No puedes simplemente agregar un elemento a una matriz fácilmente. Puede establecer el elemento en una posición dada como se describe en el resumen 888 , pero recomiendo usar una List<int> o una Collection<int> lugar, y usar ToArray() si necesita convertirlo en una matriz.


Puedes hacerlo de esta manera

int[] terms = new int[400]; for (int runs = 0; runs < 400; runs++) { terms[runs] = value; }

Alternativamente, puede usar Listas: la ventaja es que no es necesario saber el tamaño de la matriz cuando se crea una instancia de la lista.

List<int> termsList = new List<int>(); for (int runs = 0; runs < 400; runs++) { termsList.Add(value); } // You can convert it back to an array if you would like to int[] terms = termsList.ToArray();

Edit: 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) en bucle el uso de la matriz para es 5 veces más barato que el bucle en la Lista <T> usando foreach (lo que la mayoría de nosotros hacemos).


Sólo un enfoque diferente:

int runs = 0; bool batting = true; string scorecard; while (batting = runs < 400) scorecard += "!" + runs++; return scorecard.Split("!");


Si estás escribiendo en C # 3, puedes hacerlo con una sola línea:

int[] terms = Enumerable.Range(0, 400).ToArray();

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 pueda ser redimensionado dinámicamente, como parece ser el caso de PHP (nunca lo aprendí), entonces es posible que desee usar una Lista en lugar de un int [] . Así es como se vería ese código:

List<int> terms = Enumerable.Range(0, 400).ToList();

Sin embargo, tenga en cuenta que no puede simplemente agregar un elemento 401st al establecer los términos [400] en un valor. En su lugar, deberías llamar a Add (), así:

terms.Add(1337);


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 una List<T> genérica List<T> : para hacer esto, deseará convertir la matriz a una var termsList = terms.ToList(); y usa el método Add. Luego, cuando haya terminado, use los var terms = termsList.ToArray(); Método para convertir de nuevo a una matriz.

var terms = default(int[]); var termsList = terms == null ? new List<int>() : terms.ToList(); for(var i = 0; i < 400; i++) termsList.Add(i); terms = termsList.ToArray();

La segunda forma es redimensionar la matriz actual:

var terms = default(int[]); for(var i = 0; i < 400; i++) { if(terms == null) terms = new int[1]; else Array.Resize<int>(ref terms, terms.Length + 1); terms[terms.Length - 1] = i; }

Si está utilizando .NET 3.5 Array.Add(...);

Ambos te permitirán hacerlo dinámicamente. Si va a agregar muchos artículos, solo use una List<T> . Si es solo un par de elementos, tendrá un mejor rendimiento al cambiar el tamaño de la matriz. Esto se debe a que recibe más de un hit para crear el objeto List<T> .

Tiempos en garrapatas:

3 artículos

Tiempo de cambio de tamaño de la matriz: 6

Lista de agregar tiempo: 16

400 artículos

Tiempo de cambio de tamaño de la matriz: 305

Añadir lista de tiempo: 20


Si realmente necesitas una matriz, lo siguiente es probablemente el más simple:

using System.Collections.Generic; // Create a List, and it can only contain integers. List<int> list = new List<int>(); for (int i = 0; i < 400; i++) { list.Add(i); } int [] terms = list.ToArray();


Tienes que asignar la matriz primero:

int [] terms = new int[400]; // allocate an array of 400 ints for(int runs = 0; runs < terms.Length; runs++) // Use Length property rather than the 400 magic number again { terms[runs] = value; }


Usando el método de Linq , Concat hace esto simple.

int[] array = new int[] { 3, 4 }; array = array.Concat(new int[] { 2 }).ToArray();

resultado 3,4,2


Utilizar una Lista como intermediario es la forma más fácil, como han descrito otros, pero como su entrada es una matriz y no solo desea mantener los datos en una Lista, supongo que puede estar preocupado por el rendimiento.

El método más eficiente es probablemente 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:

public static T[] Add<T>(this T[] target, T item) { if (target == null) { //TODO: Return null or throw ArgumentNullException; } T[] result = new T[target.Length + 1]; target.CopyTo(result, 0); result[target.Length] = item; return result; }

También puedo publicar código para un método de extensión Insertar que toma un índice de destino como entrada, si lo desea. Es un poco más complicado y utiliza el método estático Array.Copy 1-2 veces.


/*arrayname is an array of 5 integer*/ int[] arrayname = new int[5]; int i, j; /*initialize elements of array arrayname*/ for (i = 0; i < 5; i++) { arrayname[i] = i + 100; }


static void Main(string[] args) { int[] arrayname = new int[5];/*arrayname is an array of 5 integer [5] mean in array [0],[1],[2],[3],[4],[5] because array starts with zero*/ int i, j; /*initialize elements of array arrayname*/ for (i = 0; i < 5; i++) { arrayname[i] = i + 100; } /*output each array element value*/ for (j = 0; j < 5; j++) { Console.WriteLine("Element and output value [{0}]={1}",j,arrayname[j]); } Console.ReadKey();/*Obtains the next character or function key pressed by the user. The pressed key is displayed in the console window.*/ }


int ArraySize = 400; int[] terms = new int[ArraySize]; for(int runs = 0; runs < ArraySize; runs++) { terms[runs] = runs; }

Así sería como lo codificaría.


int[] terms = new int[10]; //create 10 empty index in array terms //fill value = 400 for every index (run) in the array //terms.Length is the total length of the array, it is equal to 10 in this case for (int run = 0; run < terms.Length; run++) { terms[run] = 400; } //print value from each of the index for (int run = 0; run < terms.Length; run++) { Console.WriteLine("Value in index {0}:/t{1}",run, terms[run]); } Console.ReadLine();

/*Salida:

Valor en índice 0: 400
Valor en índice 1: 400
Valor en índice 2: 400
Valor en índice 3: 400
Valor en índice 4: 400
Valor en índice 5: 400
Valor en índice 6: 400
Valor en índice 7: 400
Valor en índice 8: 400
Valor en índice 9: 400
* /


int[] terms = new int[400]; for(int runs = 0; runs < 400; runs++) { terms[runs] = value; }