View Full Version : [c#]Help con list
Ciao,
ho una classe cosi composta:
class soggetto{
.. metodo lettura dati
protected int id;
protected string nome;
protected string cognome;
protected string email;
protected string telefono;
}
Ora durante l'esecuzione del programma creo una lista di tipo soggetto:
List<client> clientList=new List<client>();
La mia domanda è questa:
Come faccio ad accedere direttamente a un campo della lista e piu precisamente a uno dei campi del record(nome , cognome email o telefono) ?
Posso accedere per ogni elemento della lista a un metodo di tipo soggetto?
Grazie.
Se ho capito vuoi qualcosa del genere:
Iterator it = clientList.iterator()
while (it.hasNext())
{
soggetto current = (soggetto) it.next();
System.out.println(s.nome);
}
Non sono sicurissimo che sia necessario il cast, aspettiamo qualche esperto ;)
edit: credo che non sia necessario, dai un occhiata qui:
http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter10/generics.html
Ciao,
ho una classe cosi composta:
class soggetto{
.. metodo lettura dati
protected int id;
protected string nome;
protected string cognome;
protected string email;
protected string telefono;
}
Ora durante l'esecuzione del programma creo una lista di tipo soggetto:
List<client> clientList=new List<client>();
Perche' dici di creare una lista di tipo soggetto e poi invece crei una Lista di tipo client?
Che relazione c'e' tra client e soggetto?
La mia domanda è questa:
Come faccio ad accedere direttamente a un campo della lista e piu precisamente a uno dei campi del record(nome , cognome email o telefono) ?
Posso accedere per ogni elemento della lista a un metodo di tipo soggetto?
Grazie.
Un campo della lista lo prendi come ha scritto Gremo, oppure direttamente dall'indice:
clientlist[15]
Pero' i campi che hai scritto sopra sono protected, non sono visibili dall'esterno (Non e' un problema di lista)
O li rendi pubblici oppure meglio ancora gli esponi ciascuno mediante una proprieta.
Se per esempio email fosse pubblica, o fosse esposta mediante una proprieta' pubblica, allora potresti scrivere
clientlist[15].email;
Perche' dici di creare una lista di tipo soggetto e poi invece crei una Lista di tipo client?
Che relazione c'e' tra client e soggetto?
E' un mio errore di battitura...volevo scrivere soggetto.
Quindi la meglio secondo voi sarebbe quella di renderli pubblici...
Mettendo il caso che questi attributi fossero protected invece come potrei accedere a un campo di un record della lista?Con un metodo appartenente alla classe soggetto?
E' un mio errore di battitura...volevo scrivere soggetto.
Quindi la meglio secondo voi sarebbe quella di renderli pubblici...
Mettendo il caso che questi attributi fossero protected invece come potrei accedere a un campo di un record della lista?Con un metodo appartenente alla classe soggetto?
no la soluzione migliore è che siano privati con metodi accessori...
è un famoso "refactoring", ossia una tecnica per riscrivere codice più comprensibile e ordinato...
http://www.refactoring.com/catalog/encapsulateField.html
Appunto,quindi pero' se creo una lista della classe soggetto,quando la scorro come faccio ad accedere al campo nome per esempio?
Cosi lista[i].metodolettura(); ?
Appunto,quindi pero' se creo una lista della classe soggetto,quando la scorro come faccio ad accedere al campo nome per esempio?
Cosi lista[i].metodolettura(); ?
Quello e' un modo.
Meglio pero' usare le proprieta'
public classe pippo
{
protected int i_altezza;
public int Altezza
{
get
{
return i_altezza;
}
}
}
potrai fare qualcosa tipo
int hhh=lista[i].Altezza;
Come se Altezza fosse una variabile normale.
Invece e' una proprieta', in questo caso di sola lettura, il cui valore e' quello della tua variabile protetta i_altezza.
Quello e' un modo.
Meglio pero' usare le proprieta'
public classe pippo
{
protected int i_altezza;
public int Altezza
{
get
{
return i_altezza;
}
}
}
potrai fare qualcosa tipo
int hhh=lista[i].Altezza;
Come se Altezza fosse una variabile normale.
Invece e' una proprieta', in questo caso di sola lettura, il cui valore e' quello della tua variabile protetta i_altezza.
Posso farlo anche se le variabili sono private?
Grazie ancora.
Posso farlo anche se le variabili sono private?
Grazie ancora.
Certo.
Le proprieta' get e set sono membri della classe.
Come tali possono fare tutto quello che fanno i membri di una classe, compreso leggere o scrivere le variabili private.
Ti consiglio di leggere qualche paragrafo relativo al concetto di visibilita' nel paradigma ad oggetti. Almeno public, protected e private sono presenti quasi dappertutto con quasi gli stessi significati.
http://msdn2.microsoft.com/en-us/library/ba0a1yw2(VS.71).aspx
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.