Título: Array de clases sin dimencion Publicado por: Fabricio en 2 Agosto 2017, 14:42 pm Hola buenas tardes.
Tengo una pregunta. Tengo 3 clases: Persona, Alumno y Docente. Docente y Alumno heredan de persona Quiero crear un array de tipo Persona, ingresar Alumnos y Docentes en cualquier orden y guardarlos en el arrat No se cuantos alumnos y docentes se desea ingresar, por lo tanto no se el tamaño del array Persona. Use este codigo pero no funciono. El error es que array es una referencia a objeto nula Código: public void Cargar() Si o si debo usar el tipo array, ni listas ni ninguna otra cosa, array{ Persona[] array = null; array [0] = new Alumno(); array [1] = new Docente(); array [2] = new Alumno(); array [3] = new Docente(); foreach (Persona p in array ) { p.Caminar(); } } Podrian ayudarme muchas gracias Título: Re: Array de clases sin dimencion Publicado por: ivancea96 en 2 Agosto 2017, 15:09 pm Un array, para usaarlo, tienes siempre que crearlo primero. new Persona[5], por ejemplo.
Luego, si resutla que quieres agregar 1 elemento, tendrás que crear otro array de 6 elementos y copiar los 5 primeros del anterior array. Para hacer esto ya hay un método, Array.Resize: Código Este método se encarga de copiar los elementos del array anterior al nuevo. Al ir por referencia, no hace falta que cambies el contenidod e tu array ni nada. Título: Re: Array de clases sin dimencion Publicado por: Fabricio en 2 Agosto 2017, 19:11 pm Hola ivancea96.
Gracias por responder. Una pregunta , que pasa si yo no ingreso por teclado el tipo de objeto que quiero crear ej primero un alumno, luego un docente, etc y a medida que elijo una opcion voy creando un array con el tipo de dato; este metodo me obliga a redimencionar el array cada ves que el usuario decida crear un objeto. Existe alguna otra forma de hacer esto usando arrays. Muchas gracias Título: Re: Array de clases sin dimencion Publicado por: ivancea96 en 2 Agosto 2017, 19:29 pm Una opción, que es la que usan muchas clases, es, en vez de redimensionar de 1 en 1, redimensionar con espacio extra. Generalmente, se suele ahcer duplicando el tamaño del array, pero esto ya depende. Por ejemplo, si un array de 4 se llena, lo redimensionamos a 8. Llenamos el quinto hueco, y el resto quedan sin usarse.
Para hacer esto, hay que almacenar además el tamaño del array "usado", para saber donde insertar o hasta donde leer. Título: Re: Array de clases sin dimencion Publicado por: Fabricio en 3 Agosto 2017, 13:24 pm Hola ivancea96.
Muchas gracias por tu respuesta; lo probé y funciono. Saludos. |