recorrer - suma de matrices en c#




Agregar valores a una matriz de C# (12)

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;
}

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.


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.


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


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


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


            /*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[] 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;
}






arrays