Índice
1. Introducción2. Palabras Clave
3. Inversión de Elementos
4. Copiar Elementos
5. Conversión
6. Redimensionamiento
7. Conclusiones
8. Literatura & Enlaces
1. Introducción
Esta última parte de la serie de artículos Clase Array en C#, describe cuatro operaciones adicionales que el programador puede realizar con un objeto de la clase Array: invertir, copiar, convertir y redimensionar un arreglo. Para ello será necesario explorar métodos como: Reverse, Clone, CopyTo, Copy y ConvertAll.
2. Palabras Clave
- Arreglo
- Copiar
- Conversión
- Redimensionamiento
3. Inversión de Elementos
Encontramos en la clase Array las versiones sobrecargadas del método Reverse para invertir el orden de los elementos integrales (Albahari, 2012):
- void Reverse (Array array): esta versión toma un objeto Array e invierte todos los elementos del arreglo.
- void Reverse (Array array, int index, int length): con esta versión se invierte sólo una porción de los elementos del arreglo pasado como argumento.
Ambas versiones son static.
Un ejemplo de uso podría ser:
Array tresMaestros = Array.CreateInstance(typeOf(string), 3);
tresMaestros.SetValue("Balzac", 0);
tresMaestros.SetValue("Dickens", 1);
tresMaestros.SetValue("Dostoevski", 2);
Al imprimir los elementos del arreglo tresElementos se mostrará: Balzac, Dickens y Dostoevski. Luego al invocar el método static Reverse:
Array.Reverse(tresMaestros);
el contenido del arreglo será: Dostoevski, Dickens y Balzac.
4. Copiar Elementos
Los métodos Clone, CopyTo, Copy y ConstrainedCopy de la clase Array copian los elementos de un arreglo en modo shallow (La Clase Array en C# - Parte 1/3).
- Clone: Crea una copia de todo el contenido del arreglo.
- Copy, CopyTo: Crea una copia de un subconjunto de los elementos de un arreglo.
- ContrainedCopy: Copia los elementos de un arreglo comprobando que no existan errores durante el proceso. Si algo sale mal, la copia se suspende y los cambios se deshacen.
5. Conversión
Para convertir el tipo de dato de los elementos de un arreglo, C# proporciona el método ConvertAll ("Array.ConvertAll", 2017). Este método recibe como argumento el arreglo a convertir, y un delegado que lleva a cabo la conversión en concreto.
Ejemplo de uso:
double[] constantes = {3.14159, 2.71828, 0.57721}
int[] valoresEnteros = Array.ConvertAll (reals, v => Convert.ToInt32(v));
6. Redimensionamiento
El método Array.Resize ("Array.Resize(T)", 2017) crea un nuevo arreglo en el que se copian los elementos de un arreglo fuente; además se espeficia el tamaño del nuevo arreglo por medio de argumento int. La instancia retornada mantiene las mismas referencias de los elementos del arreglo fuente; es decir que se llama a cabo un copiado tipo shallow.
7. Conclusiones
Se describieron los métodos para invertir, copiar, convertir y redimensionar arreglos de la clase Array. Tener conocimiento conceptual de estos elementos de programa nos permitirá escribir aplicaciones que hagan uso de operaciones optimizadas que provee .NET Framework a través de los lenguajes de programación compatibles.
8. Literatura & Enlaces
Albahari, J., Albahari, B. (2012). C# 5.0 in a Nutshell. United States: O'Reilly Media.Array.Reverse Method (System) (2017). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.array.reverse(v=vs.110).aspx
La Clase Array en C# - Parte 1/3 (2017). Recuperado desde: https://ortizol.blogspot.com.co/2017/09/la-clase-array-en-csharp-parte-1-3.html
Array.ConstrainedCopy Method (Array, Int32, Array, Int32, Int32) (System) (2017). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.array.constrainedcopy(v=vs.110).aspx
Array.ConvertAll(TInput, TOutput) Method (TInput[], Converter(TInput, TOutput)) (System) (2017). Recuperado desde: https://msdn.microsoft.com/en-us/library/exc45z53(v=vs.110).aspx
Array.Resize(T) Method (T[], Int32) (System) (2017). Recuperado desde: https://msdn.microsoft.com/en-us/library/bb348051(v=vs.110).aspx
O
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.