44 messaggi dal 14 luglio 2005
.....
adesso ho un altro problema che sto cercando di risolvere senza buon esito.

L'accessibilità agli array di array di stringhe.
HO il seguente codice:

Array _Prenotazioni = new Array[100];
string[] lNominativo = new string[2]{"Vuoto","Vuoto"};
_Prenotazioni.SetValue(lNominativo,0);
lNominativo[0] = "pippo";
lNominativo[1] = "pluto";
_Prenotazioni.SetValue(lNominativo,1);
lNominativo[0] = "Topolino";
lNominativo[1] = "Paperino";
_Prenotazioni.SetValue(lNominativo,2);

Il problema è ad es. come recuperare il valore "Pippo" ed il valore "Paperino"

Ho provato a fare:
string[] newCampo= new string[2];

newCampo(0) = _Prenotazioni[1][0];
newCampo(1) = _Prenotazioni[2][1];

ma non funziona...
ho provato a fare
newCampo(0) = _Prenotazioni.GetValue(1,0);
newCampo(1) = _Prenotazioni.GetValue(2,1);

ma non funziona ....
Cosa debbo fare?!??!?!?!?

Grazie a lot!!!!
26 messaggi dal 20 luglio 2005
Il tuo problema principale è l'inserimento dei dati, ogni volta che inserisci "lNominativo" nell'array devi reinstanziarlo.

Prova così:


Array _Prenotazioni = new Array[100];
string[] lNominativo = new string[2]{"Vuoto","Vuoto"};
_Prenotazioni.SetValue(lNominativo,0);
//Qui Reinstanzi l'oggetto
lNominativo = new string[2];
lNominativo[0] = "pippo";
lNominativo[1] = "pluto";
_Prenotazioni.SetValue(lNominativo,1);
lNominativo = new string[2];
lNominativo[0] = "Topolino";
lNominativo[1] = "Paperino";
_Prenotazioni.SetValue(lNominativo,2);

string[] newCampo= new string[2];

//Per recuperare il valore da un Array di Oggetti devi
//specificare che oggetto vi è contenuto (in questo caso un
//array di stringhe)
newCampo[0] =((string[])_Prenotazioni.GetValue(1))[0];
newCampo[1] = ((string[])_Prenotazioni.GetValue(2))[1];

spero di essere stato chiaro
44 messaggi dal 14 luglio 2005
Grande!!!!!
ha funzionato.. ma scusa non ne comprendo i concetti.
Perche in c# se voglio assegnare un altro valore ad un oggetto string
già istanziato lo debbo reinizializzare di nuovo col new?
non era già stato fatto?
in ogni caso Grazie Molto.
26 messaggi dal 20 luglio 2005
Seguiamo passo passo cosa succede:

Array _Prenotazioni = new Array[100];
string[] lNominativo = new string[2]{"Vuoto","Vuoto"};
_Prenotazioni.SetValue(lNominativo,0);

a questo punto nell'oggetto _Prenotazioni hai alla prima posizione un oggetto che è array di stringhe di 2 elementi con ("Vuoto","Vuoto")

se a questo punto effettuaiamo questa parte di codice (sbagliato!!!)

lNominativo[0] = "pippo";
lNominativo[1] = "pluto";
_Prenotazioni.SetValue(lNominativo,1);

tu avrai nella prima posizione un oggetto che è array di stringhe di 2 elementi con ("pippo","pluto") e nella seconda posizione lo stesso identico oggetto che è array di stringhe di 2 elementi con ("pippo","pluto")

In pratica hai nella prima e nella seconda posizione lo stesso identico oggetto; reinstanziandolo (lNominativo = new string[2];
) invece farai riferimento ad un nuovo oggetto e quindi non andrai a modificare i dati gia inseriti.
44 messaggi dal 14 luglio 2005
Grazie molto.... ma problem in progress
Ora ho un funzionamento corretto quando cerco di recuperare i dati.
Infatti utilizzando il foreach come segue
foreach (string[] elCognome in _Prenotazioni)
{
if (elCognome[0].ToString() == pCognome)
...
}

mi aspettavo che l'uscita dal foreach fosse gestita dall'istruzione stessa. Invece continua ad entrare per tutti gli elementi istanziati eppoi mi da errore sul primo non istanziato.
Come posso bypassarlo?
Grazie
Modificato da piossto il 23 febbraio 2006 16.42 -
26 messaggi dal 20 luglio 2005
Io ti consiglierei di usare un ArrayList anzichè un array:

quindi:

ArrayList _Prenotazioni = new ArrayList();
string[] lNominativo = new string[2]{"Vuoto","Vuoto"};
_Prenotazioni.Add(lNominativo);
lNominativo = new string[2];
lNominativo[0] = "pippo";
lNominativo[1] = "pluto";
_Prenotazioni.Add(lNominativo);
lNominativo = new string[2];
lNominativo[0] = "Topolino";
lNominativo[1] = "Paperino";
_Prenotazioni.Add(lNominativo);
string pCognome="pippo";
foreach (string[] elCognome in _Prenotazioni)
{
if (elCognome[0].Equals(pCognome))
{
//qui entra solo con pippo
}
}
44 messaggi dal 14 luglio 2005
Ho scoperto che il foreach di C# ha un comportamento diverso dal for each di VB.
Infatti mentre in VB il loop continua fintanto che ci sono valori
ed esce al primo valore null ed inoltre è possibile modificare
l'elemento caricato dal foreach in C# no.
Cioè ad es. nel caso di un array il loop continua per tutti gli elementi dell'array stesso, anche se non hanno valore e sono null.
Inoltre non si può modificare il valore della variabile del ciclo foreach.
Che brutto!!!!
Un saluto a tutti. Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.