Desarrollo de Aplicaciones

Capítulo 04 Arrays y Colecciones

Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Agenda
• Repaso sesión anterior. • Arrays
– – – – – Definiciones Tipos de arrays Declaración e instanciación Inicialización Iteración sobre arrays

• Colecciones
– Introducción – Colecciones comunes – ArrayList

• Que veremos la próxima sesión?

Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Repaso sesión anterior

• Control de flujo
– Branching no-condicional – Branching condicional – Bucles

• Excepciones • Ver diapositivas previas.

Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Arrays
Referencias 1. 2. 3. 4. Learning C# 2005. Caps. 10 (Arrays), 14 (Generics and Collections) Csharp Language Specification MSDN C# Reference (http://msdn2.microsoft.com/en-us/library/618ayhy6(VS.80).aspx) MSDN C# Programming Guide (http://msdn2.microsoft.com/enus/library/67ef8sbd(VS.80).aspx)

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Arrays
• Son una colección de objetos del mismo tipo.
– Integers, Strings, Clase Persona, etc…

• • • • • •

Existen de una dimensión y multi-dimensionales. Se pueden tratar como una entidad simple (mediante un nombre). Empiezan con el elemento cero (zero-based). Deriva de la clase System.Array, por lo tanto es un tipo por referencia. Se almacenan en forma contínua (uno a continuación del otro). Tienen un tamaño definido. C# no soporta arrays dinámicos.

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Arrays

• Tipos de Arrays:

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Arrays

• Estructura de un array

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Arrays • Se declaran y crean como objetos comunes. • Declaración e instanciación: type[] array_name; array_name = new type[n];
Declarar un arreglo de enteros: int[] array_de_enteros; Instanciar e inicializar un array de 5 enteros con el valor cero: array_de_enteros = new int[5]; O también: int[] array_de_enteros = new int[5];
Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Arrays • Valores por defecto:
– Al crear un array de tipos por valor: los elementos se inicializan en cero.
myIntArray = new int[5]; // 5 enteros con el valor cero

– Al inicializar un array de tipos por referencia: los elementos se inicializan en null.
Button[] myButtonArray = new Button[3]; // 3 botones con el valor null.

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Arrays

• Posicionamiento en memoria

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Arrays • Inicialización de los elementos de un array:
int[] pins = new int[4] { 9, 3, 7, 2 }; o int[] pins = { 9, 3, 7, 2 };
Person[] arreglo = new Person[] { new Person(), newPerson() }; o Person[] arreglo = { new Person(), new Person() }

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Arrays

• Iteración sobre un array:
int[] pins = { 9, 3, 7, 2 }; for (int index = 0; index < pins.Length; index++) { int pin = pins[index]; Console.WriteLine(pin); } int[] pins = { 9, 3, 7, 2 }; foreach (int pin in pins) { Console.WriteLine(pin); }
Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Colecciones
Referencias 1. Learning C# 2005. Caps 14 (Generics and Collections).

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Colecciones
• Son listas de datos que no se acceden necesariamente por un índice. • Proveen funcionalidad adicional a los clásicos Arrays. • Están diseñadas para manejar listas dinámicas de objetos. • Pueden aumentar o disminuir su tamaño automáticamente. • Tienen un mejor performance en el redimensionamiento que Array.Resize. • Almacenan sus elementos, como objetos. • Hay varios tipos de colecciones con fines específicos.

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Colecciones

• Colecciones Comunes del Framework
– Arrays – ArrayList y List – Hashtables y Dictionary – SortedList y SortedDictionary – Queue – Stack

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Colecciones

• ArrayList:
– Es la más parecida a un Array, y es una versión más sofisticada. – Es totalmente dinámica al manejar su contenido. – Tiene mejor performance para el redimensionado. – Se le pueden agregar o remover elementos, invocando a sus métodos. – Es la versión no-genérica de List<T>.

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Colecciones

• ArrayList:
public class Employee { private int empID; public Employee( int empID ) { this.empID = empID; } public override string ToString( ) { return empID.ToString( ); } public int EmpID { get { return empID; } set { empID = value; } } }

public class Tester { static void Main( ) { List<Employee> empList = new List<Employee>( ); List<int> intList = new List<int>( ); // populate the List for ( int i = 0; i < 5; i++ ) { empList.Add( new Employee( i + 100 ) ); intList.Add( i * 5 ); } // print all the contents for ( int i = 0; i < intList.Count; i++ ) { Console.Write( "{0} ", intList[i].ToString( ) ); } Console.WriteLine( "\n" ); // print all the contents of the Employee List for ( int i = 0; i < empList.Count; i++ ) { Console.Write( "{0} ", empList[i].ToString( ) ); } Console.WriteLine( "\n" ); Console.WriteLine( "empList.Capacity: {0}", empList.Capacity ); }

Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

}

Que veremos la próxima sesión?

• ADO.Net 2.0

Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Fin de la sesión • Dudas, comentarios, sugerencias? • Comunicarse por email a eriveraa@gmail.com • Gracias por su atención !!

Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.