El propósito de este código es mostrar cómo se cambia el tamaño de una matriz en C#.
Antes
de seguir con el código, es necesario tener conocimientos previos sobre
declaración e inicialización de matrices, así como de los métodos y
propiedades de la clase Array. Aquí os dejo unos links de la
documentación MSDN:
1- Declarar e inicializar matrices.
2- Utilizar Foreach en matrices.
3- Métodos y propiedades de la clase Array.
En realidad cambiar el tamaño de una matriz no tiene mucho misterio. Supongamos una matriz de tipo int llamada miMatriz:
int[] miMatriz = { 1, 2, 3 };
Supongamos ahora que queremos ampliarla en 4 elementos, es decir, conseguir una matriz de 7 elementos. Es muy sencillo:
miMatriz = new int[miMatriz.Length + 4];
Todo
correcto. Ahora tenemos una matriz de tipo int llamada miMatriz que
puede contener 7 elementos. Pero ahora vienen las preguntas:
¿Qué ha ocurrido con los datos de la matriz original { 1, 2, 3 }?.
¿La nueva matriz contiene los datos originales?.
La
respuesta es que los datos originales { 1, 2, 3 } se han perdido al
obtener una nueva matriz de 7 elementos “vacios”, es decir, la nueva
matriz contiene { 0, 0, 0, 0, 0, 0, 0 }. Veámoslo en el código.
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Declarar e inicilizar una matriz de tipo int
int[] miMatriz = { 1, 2, 3 };
// Mostrar el contenido de MiMatriz
Console.WriteLine("Esta es miMatriz original...");
foreach (int x in miMatriz)
Console.WriteLine(x);
Console.WriteLine();
// Ampliamos miMatriz y mostramos su contenido
miMatriz = new int[miMatriz.Length + 4];
Console.WriteLine("Esta es miMatriz ampliada...");
foreach (int x in miMatriz)
Console.WriteLine(x);
Console.ReadLine();
}
}
}
Como podemos observar los datos de la matriz se han perdido. ¿Qué debemos hacer para ampliar una matriz en C# sin perder los datos?. La única forma de conseguirlo es creando una copia de la matriz que queremos ampliar. Para clarificarlo sigamos estos 4 pasos:
PASO 1. Declarar e inicializar una matriz “de copia” con el mismo tamaño que la matriz original.
PASO 2. Copiar el contenido de la matriz original en la matriz “copia”.
PASO 3. Aumentar el tamaño de la matriz original.
PASO 4. Copiar el contenido de la matriz “copia” en la matriz original ya ampliada.
Veamos el código de estos 4 pasos.
class Program
{
static void Main(string[] args)
{
// Declarar e inicilizar una matriz de tipo int
int[] miMatriz = { 1, 2, 3 };
// Mostrar el contenido de MiMatriz
Console.WriteLine("Esta es miMatriz original...");
foreach (int x in miMatriz)
Console.WriteLine(x);
Console.WriteLine();
// PASO 1:
// Declarar e inicializar una matriz llamada Micopia
int[] miCopia = new int[miMatriz.Length];
// PASO 2:
// Copiar el contenido de miMatriz en miCopia
miMatriz.CopyTo(miCopia, 0);
// PASO 3:
// Cambiar el tamaño de miMatriz (en este caso lo aumentamos en 4)
miMatriz = new int[miMatriz.Length + 4];
// PASO4:
// Copiar el contenido de miCopia en miMatriz ya ampliada
miCopia.CopyTo(miMatriz, 0);
// Mostrar el contenido de miMatriz ampliada
Console.WriteLine("Esta es miMatriz ampliada...");
foreach (int x in miMatriz)
Console.WriteLine(x);
Console.ReadLine();
}
}
De
esta forma obtenemos una matriz ampliada conservando los datos pero en
definitiva este comportamiento es muy pobre. Es recomendable trabajar
con ArrayList.
Si no has programado nunca una linea de código, a la pregunta del encabezado, una buena respuesta es el libro que aquí presento.
 | Título: "El Libro de" Visual C# 2005. Autor: Foxall, James D. Editorial: Anaya Multimedia. I.S.B.N.: 978-84-415-2121-6 Fecha publicación: Enero 2007. Nº páginas: 560. Nº capítulos: 24. Precio: 30.20 euros. |
Elogios:
Los primeros 9 capítulos no tienen desperdicio. Están dedicados a explicar de manera fácil y útil el IDE de Visual Studio 2005.Creo que es por donde deberían empezar todos los libros de estepropósito. Si entro a trabajar en un taller, de nada me sirve que me digan como se utiliza una fresadora, sin dejarme entrar en el taller y ver donde están y como son las herramientas.
Los capítulos10 a 18 contienen las bases de la programación. Enseñan lo mínimo perode forma clara y eficiente. Digo lo mínimo porque por ejemplo solo hayun capítulo dedicado a la POO. Cuando este concepto, es en sí, practicamente una materia individual. Hay libros completos dedicados a la POO.
Críticas:
Los capítulos 19 a 22 supuestamente hacen referencia al trabajo con datos (ficheros, bases de datos, etc). Estos capítulos estánmuy comprimidos y por lo tanto son difíciles de entender y no son muyútiles. El autor a intentado abarcar mucho en poco espacio, apenas 130páginas.
Lo último pero no menos importante, no hay ningún contenido de aplicaciones Web.
Resumiendo:
En términos generales es un libro que enseña lo mínimo, en poco tiempo, para comenzar a realizar aplicaciones de Windows. Muy poco de aplicaciones con bases de datos y absolutamente nada de aplicaciones Web.