elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Array de clases sin dimencion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Array de clases sin dimencion  (Leído 898 veces)
Fabricio

Desconectado Desconectado

Mensajes: 115


Ver Perfil
Array de clases sin dimencion
« en: 2 Agosto 2017, 14:42 »

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()       
        {
            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();
            }
        }
Si o si debo usar el tipo array, ni listas ni ninguna otra cosa, array
Podrian ayudarme
muchas gracias


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Array de clases sin dimencion
« Respuesta #1 en: 2 Agosto 2017, 15:09 »

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
  1. Array.Resize(ref array, 6);
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.


En línea

Fabricio

Desconectado Desconectado

Mensajes: 115


Ver Perfil
Re: Array de clases sin dimencion
« Respuesta #2 en: 2 Agosto 2017, 19:11 »

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

En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Array de clases sin dimencion
« Respuesta #3 en: 2 Agosto 2017, 19:29 »

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.
En línea

Fabricio

Desconectado Desconectado

Mensajes: 115


Ver Perfil
Re: Array de clases sin dimencion
« Respuesta #4 en: 3 Agosto 2017, 13:24 »

Hola ivancea96.
Muchas gracias por tu respuesta; lo probé y funciono.
Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines