Está en la página 1de 19

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. Learning C# 2005. Caps. 10 (Arrays), 14 (Generics and Collections)


2. Csharp Language Specification
3. MSDN C# Reference (http://msdn2.microsoft.com/en-us/library/618ayhy6(VS.80).aspx)
4. MSDN C# Programming Guide (http://msdn2.microsoft.com/en-
us/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
public class Tester

• ArrayList:
{
static void Main( )
{
public class Employee List<Employee> empList = new List<Employee>( );
{ List<int> intList = new List<int>( );
private int empID;
// populate the List
public Employee( int empID ) for ( int i = 0; i < 5; i++ )
{ {
this.empID = empID; empList.Add( new Employee( i + 100 ) );
} intList.Add( i * 5 );
public override string ToString( ) }
{
return empID.ToString( ); // print all the contents
} for ( int i = 0; i < intList.Count; i++ )
public int EmpID {
{ Console.Write( "{0} ", intList[i].ToString( ) );
get }
{
return empID; Console.WriteLine( "\n" );
}
set // print all the contents of the Employee List
{ for ( int i = 0; i < empList.Count; i++ )
empID = value; {
} 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)