Principiante: ArreyList Problemi con il Cast

di il
2 risposte

Principiante: ArreyList Problemi con il Cast

Sto studiando c# e sto facendo degli esercizi.
Creando un ArreyList vorrei poi stampare in console soltanto la materia del docente
Sto incontrando una difficoltà con questo codice:

Ho creato una classe Persona con le seguenti proprietà:
nome, cognome, data di nascita e indirizzo

una classe Docente:Persona
con proprietà: materia

una classe Allievo:Persona
con proprietà: matricola

Creo Oggetti di tipo Persona, Docente e Allievi e assegno i valori

	    Persona p = new Persona();
            p.Indirizzo = "Via delle Magnolie, 25";
            p.Nome = "Elio";
            p.Cognome = "Castello";
            p.Dt_nascita = DateTime.Parse("01/01/2011");

            Persona p1 = new Persona();
            p1.Nome = "Vincenzo";
            p1.Cognome = "Porta";
            p1.Dt_nascita = DateTime.Parse("01/02/2000");
            p1.Indirizzo = "Via Po 1";

            Persona p2 = new Persona();
            p2.Nome = "Sandra";
            p2.Cognome = "Aprile";
            p2.Dt_nascita = DateTime.Parse("01/02/1999");
            p2.Indirizzo = "Via Po 2";

            //Lista dei Docenti
            Docente d = new Docente();
            d.Nome = "DNome";
            d.Cognome = "DCognome";
            d.Dt_nascita = DateTime.Parse("30/01/0001");
            d.Indirizzo = "Indirizzo Docente";
            d.Materia = "Storia";

            Docente d1 = new Docente();
            d1.Nome = "DNome1";
            d1.Cognome = "DCognome1";
            d1.Dt_nascita = DateTime.Parse("29/01/0001");
            d1.Indirizzo = "Indirizzo Docente1";
            d1.Materia = "Italiano";

            Docente d2 = new Docente();
            d2.Nome = "DNome2";
            d2.Cognome = "DCognome2";
            d2.Dt_nascita = DateTime.Parse("28/01/0002");
            d2.Indirizzo = "Indirizzo Docente2";
            d2.Materia = "Inglese";

            //Lista degli Allievi
            Allievo a = new Allievo();
            a.Nome = "ANome";
            a.Cognome = "ACognome";
            a.Dt_nascita = DateTime.Parse("30/01/0001");
            a.Indirizzo = "Indirizzo Allievo";

            Allievo a1 = new Allievo();
            a1.Nome = "ANome1";
            a1.Cognome = "ACognome1";
            a1.Dt_nascita = DateTime.Parse("29/01/0001");
            a1.Indirizzo = "Indirizzo Allievo1";

            Allievo a2 = new Allievo();
            a2.Nome = "ANome2";
            a2.Cognome = "ACognome2";
            a2.Dt_nascita = DateTime.Parse("28/01/0002");
            a2.Indirizzo = "Indirizzo Allievo2";
Popolo l'ArreyList Persone

            ArrayList Persone = new ArrayList();
            Persone.Add(p); //classe Persona
            Persone.Add(p1); //classe Persona
            Persone.Add(p2); //classe Persona
            Persone.Add(d); //classe Docente
            Persone.Add(d1); //classe Docente
            Persone.Add(d2); //classe Docente
            Persone.Add(a); //classe Allievo
            Persone.Add(a1); //classe Allievo
            Persone.Add(a2); //classe Allievo            
Provo a stampare la materia

 foreach (Persona vD in Persone)
                if (vD is Docente)
                    Console.WriteLine(vD.Materia);

ma ottengo questo messaggio:
Errore 1 'ConsoleApplication1.Persona' non contiene una definizione di 'Materia' e non è stato trovato alcun metodo di estensione 'Materia' che accetta un primo argomento di tipo 'ConsoleApplication1.Persona'. Probabilmente manca una direttiva using o un riferimento a un assembly. C:\Users\xxx\Documents\Visual Studio 2012\Projects\Prova\Prova\Program.cs 128 42 Prova

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte