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