Arraylist e struct [c#]

sabato 31 maggio 2008 - 12.10

skas Profilo | Newbie

Ciao scrivo per una curiosità. Uso visual studio 2003 e il framework 1.1.

Ho fatto un array list
ArrayList lista = new ArrayList();
da riempire con oggetti di tipo struct. Ogni struct è fatta così:

public enum azione {nothing, download ,delete}; struct prova { public string matricola; public string versione; public azione comportamento; }

io faccio una variabile

prova p; p.matricola = "2"; p.versione = "3"; p.comportamento = azione.nothing;

e poi la inserisco nell'arraylist:

lista.Add(p);

vorrei sapere se esiste un metodo diretto per cambiare i valori dentro la struct
qualcosa del tipo
lista[0].p.matricola = "6"

Chiedo questo perchè trovando questo codice:

ArrayList myAL = new ArrayList(); myAL.Add( "The" ); myAL.Add( "quick" ); myAL.Add( "brown" ); myAl[1] = "slowly";

avevo visto che potevo andare direttamente a modificare i valori.

Qualche suggeriemento??
Grazie

Dome

aiedail92 Profilo | Expert

Ciao

Il ciò che vuoi fare tu si può fare, ma dato che l'ArrayList non fornisce una tipizzazione dei contenuti (cosa che avviene coi generics), devi prima fare un cast. Quindi, eseguito il cast dell'elemento sul tuo tipo, puoi accedere ai membri:

((prova)lista[0]).matricola = "6";

Luca

skas Profilo | Newbie

ho scritto come mi hai detto ma mi da qst errorre:

La parte sinistra di un'assegnazione deve essere una variabile, una proprietà o un indicizzatore.
Dome

aiedail92 Profilo | Expert

Ciao

prova così:

prova tmp = ((prova)lista[0]); tmp.matricola = "6";

Luca

skas Profilo | Newbie

si ma così non viene modificato il valore dentro la arraylist. lo copio in un altra variabile e lo modifico li.
a me serve modificare quello dentro l'arraylist
Dome

aiedail92 Profilo | Expert

Puoi sempre risostituirlo all'interno dell'ArrayList.

Non si può fare diversamente perchè l'elemento è un tipo valore e non un tipo riferimento.

Luca

skas Profilo | Newbie

dando unaocchio all'arraylist ho visto che posso inserire un elemento in un dato indice. però questa inserzione non modifica quello già esistente ma si limita a farlo shiftare di uno verso il basso.

questo vuol dire che per modificare un elemento dell'arraylist devo
1) salvare l'elemento su una var di tipo prova
2) apportare le modifiche sulla var
3) cancellare l'elemento dall'arraylist
4) inserire la var modificata nella posizione di quello appena cancellato

.......tutto sto sbattone ???
Dome

aiedail92 Profilo | Expert

Non sarebbe più semplice fare

lista[indice] = tmp;



Luca

skas Profilo | Newbie

Mi sento uno dell'U.C.A.F (ufficio complicaizoni affari semplici).
grazie mille per l'illuminazione
Dome

aiedail92 Profilo | Expert

Una svista può sempre capitare

Alla prossima!

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5