|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
[c#]Help con list
Ciao,
ho una classe cosi composta: Codice:
class soggetto{
.. metodo lettura dati
protected int id;
protected string nome;
protected string cognome;
protected string email;
protected string telefono;
}
Codice:
List<client> clientList=new List<client>(); 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. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Se ho capito vuoi qualcosa del genere:
Codice:
Iterator it = clientList.iterator()
while (it.hasNext())
{
soggetto current = (soggetto) it.next();
System.out.println(s.nome);
}
edit: credo che non sia necessario, dai un occhiata qui: http://www.particle.kth.se/~lindsey/.../generics.html |
|
|
|
|
|
#3 | ||
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Che relazione c'e' tra client e soggetto? Quote:
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;
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
||
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Quote:
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? |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Quote:
è un famoso "refactoring", ossia una tecnica per riscrivere codice più comprensibile e ordinato... http://www.refactoring.com/catalog/e...lateField.html |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Appunto,quindi pero' se creo una lista della classe soggetto,quando la scorro come faccio ad accedere al campo nome per esempio?
Cosi Codice:
lista[i].metodolettura(); |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Meglio pero' usare le proprieta' Codice:
public classe pippo
{
protected int i_altezza;
public int Altezza
{
get
{
return i_altezza;
}
}
}
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.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Quote:
Grazie ancora. |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
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/lib...w2(VS.71).aspx
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:39.




















