Sie sind auf Seite 1von 7

Arreglos

Un arreglo es una lista no necesariamente ordenada de elementos del mismo tipo, almacenados en bloques contiguos. Una variable de tipo arreglo se declara utilizando los corchetes, los utilizamos durante la declaracin y luego para acceder a cada elemento de dicho arreglo. Int[] numeros; //declara un arreglo de valores numricos Todo el contenido del arreglo debe ser del mismo tipo, es una restriccin impuesta por la misma declaracin. En el ejemplo anterior no es posible guardar otra cosa que no sea nmero. Para poder utilizar un arreglo este debe ser inicializado en algn momento. Es durante la inicializacin que definimos cual ser la capacidad de dicho arrecho. Int[] numeros = new int[5]; //declara un arreglo de 5 posiciones enteras. 0 1 2 3 4

El arreglo anterior contiene 5 posiciones para guardar valores, comenzando a partir de la posicin 0. Una vez inicializado el arreglo podemos asignar y valores de sus respectivas posiciones. Nmeros[0] = 20; //asigno el valor 20 a la posicin 0 Nuemros[1] = 21;

Durante la inicializacin podemos incluso indicar los valores que va a tener cada posicin. Por ejemplo, en el siguiente cdigo indicamos los valores 20,30 y 40 para cada posicin del arreglo: int[] nmeros[] = new int[3]{ 20,30,40} Otra forma de inicializar es indicar los valores y que su vez esos valores definan la longitud del arreglo. En el siguiente caso el arreglo nombres tendra una longitud de dos posiciones. string[] nombres = new string[]{carlos,nombre}

C# - Ing. Carlos Caraballo

Todos los arreglos hereden automticamente de la clase System.Array, esto permite que incluyan una serie de funciones tiles que permiten manipular su contenido, un ejemplo es la propiedad Length que indica la cantidad de elementos dentro del arreglo. for(int i = 0 ; i < nombres.Length; i++){ s = nombres[i]; }

Arreglos en parmetros Un arreglo puede ser utilizado como un parmetro cualquiera, simplemente debemos indicar los corchetes que indican que es un arreglo. Void Mostrar( string[] nombres ){ for(int i = 0 ; i < nombres.Length; i++){ s = nombres[i]; } } En el momento de realizar la llamada de la funcin vamos a procurar pasar un arreglo que ya se haya instanciado. string[] valores = new string[]{carlos,pepe}; Mostrar( valores ); Mostrar( new string[] {maria,juana}) ; //inicializa el arrelo en el mismo momento de la invocacin.

Listas
Una lista es una especie de arreglo dinmico, es decir, que dinmicamente se agregan y remueven elementos. C# dispone de varias clases que permiten el manejo de este tipo de listas, como son: ArrayList, SortedList y HashTable. ArrayList El ArrayList soporta una cantidad ilimitada de elementos de cualquier tipo. Entre sus principales mtodos podemos mencionar los siguientes:

C# - Ing. Carlos Caraballo

a) b) c) d) e) f) g) h)

Add: Esta funcin recibe un parmetro de tipo Object para ser agregado a la lista. Clear: Limpia el contenido de la lista. Contains: Determina si un elemento existe en la lista. IndexOf: Retorna la posicin de un elemento en la lista. Si no existe retorna -1. Remove: Elimina un elemento de la lista. RemoveAt: Elimina un elemento en una determinada posicin. Count: Determina la cantidad de elementos en la lista. Sort: Ordena los elementos.

int n; System.Collections.ArrayList oList; oList = new System.Collections.ArrayList(); oList.Add("carlos"); oList.Add("pedro"); n = oList.IndexOf("carlos"); if (n < 0) Console.WriteLine("Ese elmento no existe"); else { oList.RemoveAt(n); //borra ese elemento por la posicin }

Para recorrer una lista de este tipo podemos utilizar tanto la sentencia for como la sentencia foreach. En el siguiente ejemplo creamos una lista de dos empleados, el ArrayList me permite agregar este tipo de objeto porque ya sabemos que recibe Objects, es decir, podemos agregar cualquier tipo objeto. Con el siguiente ejemplo se muestra una forma de bsqueda utilizando un recorrido de la lista en base a la sentencia for. Tratamos de localizar un empleado que tenga el cdigo 1.
Empleado emp; System.Collections.ArrayList oList; oList = new System.Collections.ArrayList(); emp = new Empleado(); emp.Codigo = 1; emp.Nombre = "Carlos"; oList.Add(emp); emp = new Empleado(); emp.Codigo = 2; emp.Nombre = "Maria"; oList.Add(emp); int codigo = 1;

C# - Ing. Carlos Caraballo

for (int i = 0; i < oList.Count; i++) { emp = (Empleado) oList[i]; if (emp.Codigo == codigo) { Console.WriteLine("El empleado buscado es:{0}", emp.Nombre); } }

El ese mismo ejemplo la sentencia foreach nos permitira simplificar ese recorrido. Esta sentencia recorre la lista y va a asignando cada elemento a la variable que se indica antes de la clusula in.

foreach (Empleado oEmp in oList ) { if (oEmp.Codigo == codigo) { Console.WriteLine("El empleado buscado es:{0}", oEmp.Nombre); } }

SortedList Este tipo de listas se le denomina Diccionario, presenta las mismas funcionalidades que el ArrayList con la diferencia de que los elementos agregados son ordenados de forma automtica, y de que cada elemento agregado est representado por una clave o cdigo que lo identifica. En este caso el ordenamiento se realiza por esa clave, igualmente las bsquedas se simplifican utilizando esa misma llave. En el siguiente ejemplo, que es una modificacin al ejemplo anterior, agregamos una lista de empleado y decimos que cada empleado est representado por el valor de la propiedad cdigo, ese valor sera la llave. Luego podemos ver lo sencillo que es localizar un empleado utilizando esa llave.
System.Collections.SortedList oList;

oList = new System.Collections.SortedList (); emp = new Empleado(); emp.Codigo = 1; emp.Nombre = "Carlos"; oList.Add(emp.Codigo,emp); emp = new Empleado(); emp.Codigo = 2; emp.Nombre = "Maria"; oList.Add(emp.Codigo,emp);

C# - Ing. Carlos Caraballo

int codigo = 1; if ( ! oList.ContainsKey ( codigo) ){ Console.WriteLine("El empleado no existe"); }

Entonces, tanto a la hora de buscar como a la hora de recorrer es importante tener en cuenta que este tipo de listas maneja dos arreglos, uno de las llaves y otro con los elementos. El siguiente ejemplo muestra dos foreach, uno donde se recorren las llaves y otro donde se recorren los valores. En este cdigo es importante notar que a diferencia del ArrayList en este tipo de listas los elementos se acceden por la clave y no por la posicin.

foreach (int key in oList.Keys) { emp =(Empleado ) oList[key]; Console.WriteLine("La clave del empleado {0} es {1}" emp.Nombre , key ); } foreach (Empleado oEmp in oList.Values ) { Console.WriteLine("Empleado {0}", oEmp.Nombre }

);

HashTable El HashTable es una lista similar al SorteList con la diferencia de que sus elementos no son organizados de forma automtica.

Colletion Una coleccin no es ms que una lista de objetos de algn tipo especfico. Cuando se trabaja con colecciones lo normal es que se cree una clase lista especial que presenten una listado de un tipo de dato que nos interesa, para esos fines podemos utilizar la clase System.Collections.CollectionBase . Esta clase internamente contiene una lista de Object pero mediante la manipulacin de los mtodos pblicos evitamos que el usuario tenga que hacer conversiones para utilizarla.
class Empleados : System.Collections.CollectionBase { public void Add(Empleado emp ) { List.Add(emp); } public Empleado this[int index]

C# - Ing. Carlos Caraballo

{ get { return (Empleado)List[index]; } } }

En el siguiente ejemplo podemos ver que con esta coleccin no es necesario hacer Casting para tomar el empleado 0.

Empleados emps = new Empleados (); emps.Add(emp); emp = emps[0]; //

Ojo: Aunque el usuario final no tiene que hacer conversiones, internamente la clase lo hace. Es por eso que este tipo de listas ha sido sustituido por las listas genricas, es un tema que debemos estudiar tambin.

DATABLE El DataTable es una clase que no necesariamente pertenece al tema tratado en este documento, o que mejor dicho, debe ser tratado en otros temas, ms especficamente cuando se estn tratando los conceptos de manejo de datos. Sin embargo, esta clase no deja de ser una clase que simplemente maneja una lista. El DataTable representa un listado de registros, y claro debemos conocer el concepto de registro para entender este tema. Cada registro obedece a una estructura, esta estructura representa el nombre, tipo, etc., de cada columna de ese registro. Es algo parecido a una tabla de base de datos. Entonces, esta clase maneja dos colecciones, Columns que representa las columnas y Rows que representa las fijas. Para poder agregar filas a una tabla primero es necesario que se haya definido la estructura, sea las columnas que la forman. Esta estructura se crea de varias maneras que vamos a ir viendo, por ahora vamos a definirla de la forma bscia. En el siguiente ejemplo podemos ver como se crea una tabla que contiene dos campos cdigo de tipo entero y nombre de tipo alfanumrico. Luego vemos como se agregan filas a esa tabla. Los campos pueden ser accedidos tanto por la posicin como por el nombre de la columna.
System.Data.DataTable oTable;

C# - Ing. Carlos Caraballo

oTable

= new System.Data.DataTable ();

//Estructura de la tabla oTable.Columns.Add("codigo",typeof(int)); oTable.Columns.Add("nombre",typeof(string)); System.Data.DataRow oRow; //agregando filas oRow = oTable.NewRow();

//crea una nueva fila

oRow[0] = 1; //asigna el valor 1 al campo codigo por la posicin oRow["nombre"] = "carlos"; //asigna carlos aaaaal campo nombre utilizando el nombre de la columna oTable.Rows.Add(oRow); //agrega la fila

El manejo de las filas de una tabla se hace tal como se maneja cualquier coleccin.
foreach (System.Data.DataRow fila in oTable.Rows) { Console.WriteLine("Nombre {0}, Codigo {1}", fila["codigo"], fila["nombre"]); }

OJO: Esta clase es muy utilizada en las aplicaciones de datos, lo que mencionamos en este documento es con el objetivo de que podamos empezar a conocerla desde ahora, pero teniendo en cuenta que nos falta una cantidad importante de teora al respecto.

C# - Ing. Carlos Caraballo

Das könnte Ihnen auch gefallen