En este ejemplo se han creado dos "clases indexadas", que son también una novedad de C#. Una clase indexada permite mantener colecciones de elementos de cualquier tipo y acceder a ellos mediante "indexadores".
La clase ListaDeCuentas es una clase indexada: posee un ArrayList que usaremos para almacenar objetos de clase Cuenta. De ListaDeCuentas, en principio, nos interesa el código de su indexador:
		public Cuenta this[String numero] 	// Pasamos como parámetro el número de la cuenta que buscamos
		{
			get { 
				for (int i=0; i<mCuentas.Count; i++) 
				{
					Cuenta c=(Cuenta) mCuentas[i];
					if (c.numero.Equals(numero))
						return c;	// Si la encontramos, la devolvemos
				}
				return null;		// Si no la encontramos, devolvemos null
			}

			set { mCuentas.Add(value); }	// Usamos el "set" para añadir cuentas al ArrayList
		}

Por otro lado, en el constructor de ListaDeCuentas introducimos una novedad, y es que cargamos el ArrayList leyendo cuentas de un fichero xml ("cuentas.xml"). Cada vez que vamos creando instancias de Cuenta a partir del código xml, cargamos también los clientes que son titulares de la cuenta. Los clientes los vamos buscando por su NIF en la ListaDeClientes, que ha sido previamente cargada al cargar la ventana inicial de la aplicación (FMenu).


En este tercer ejemplo se ha creado un control de usuario para manejar números de cuenta de forma cómoda (presentacion/numeroDeCuenta.cs).
