[C# 1.1] Comment utiliser l'indexation d'un ArrayList ?
Salut ^^
j'ai un petit problème avec des ArrayListe...
En fait, je tente de faire un tableau de tableaux....
je vous montre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| private void videArrayList(ref ArrayList laListe)
{
for(int i = 0; i < laListe.Count; i++){
laListe.RemoveAt(i);
}
}
public void getParams(ref ArrayList listeParam){
ArrayList tmpParam = new ArrayList();
logs log = new logs();
for(int i = 0; i < this.countParams; i++){
tmpParam.Add(this.paramName[i]);
tmpParam.Add(this.paramValue[i]);
listeParam.Add(tmpParam);
this.videArrayList(ref tmpParam);
}
} |
Mon problème ici semble être que quand je remplu listeParam avec tmpParam, il n'y envoi que le PREMIER element de la liste... OR, il y en a bien 2 ! (j'ai tenté d'ecrire tmpParam[0] et tmpParam[1] dans un fichier et ca a marché)
Mais lorsque je fais ceci :
Code:
1 2 3
| foreach(ArrayList urlParam in urlParams){
postDatas += (postDatas == "") ? urlParam[0]+"="+urlParam[1] : "&"+urlParam[0]+"="+urlParam[1] ;
} |
dans la methode d'une autre classe où j'envoie la listeParam de tout a l'heure par valeur cette fois, et bien je recois une erreur d'index... (index out of range pour etre précis.)
Sauriez vous m'aider ?
Avez vous besoin de plus de précisions ?
Merci d'avance ! :D
Re: [C# 1.1] Comment utiliser l'indexation d'un ArrayList ?
Pour répondre à la question initiale , en fait ton problème vient du fait que tu n'as pas compris l'utilisation des classes.
L'objet ArrayList est une classe, c'est donc par référence qu'il est pointé.
Quand tu écris :
Code:
1 2 3 4 5 6 7 8 9
| ArrayList tmpParam = new ArrayList();
for(int i = 0; i < this.countParams; i++){
tmpParam.Add(this.paramName[i]);
tmpParam.Add(this.paramValue[i]);
listeParam.Add(tmpParam);
this.videArrayList(ref tmpParam);
} |
c'est normal qu'il n'y ait qu'une valeur dans ta liste puisqu'il n'y a qu'une seule instantiation de tmpParam.
Par contre lors de chaque passage dans le for, le listeParam.Add(tmpParam) ajoute à chaque fois la même référence !
si tu veux obtenir plusieurs valeurs alors il te faudra écrire :
Code:
1 2 3 4 5 6 7 8 9 10
|
for(int i = 0; i < this.countParams; i++){
ArrayList tmpParam = new ArrayList();
tmpParam.Add(this.paramName[i]);
tmpParam.Add(this.paramValue[i]);
listeParam.Add(tmpParam);
this.videArrayList(ref tmpParam);
} |
J'espère avoir été le plus clair possible :)
Citation:
Envoyé par Sion_Sempai
Salut ^^
j'ai un petit problème avec des ArrayListe...
En fait, je tente de faire un tableau de tableaux....
je vous montre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| private void videArrayList(ref ArrayList laListe)
{
for(int i = 0; i < laListe.Count; i++){
laListe.RemoveAt(i);
}
}
public void getParams(ref ArrayList listeParam){
ArrayList tmpParam = new ArrayList();
logs log = new logs();
for(int i = 0; i < this.countParams; i++){
tmpParam.Add(this.paramName[i]);
tmpParam.Add(this.paramValue[i]);
listeParam.Add(tmpParam);
this.videArrayList(ref tmpParam);
}
} |
Mon problème ici semble être que quand je remplu listeParam avec tmpParam, il n'y envoi que le PREMIER element de la liste... OR, il y en a bien 2 ! (j'ai tenté d'ecrire tmpParam[0] et tmpParam[1] dans un fichier et ca a marché)
Mais lorsque je fais ceci :
Code:
1 2 3
| foreach(ArrayList urlParam in urlParams){
postDatas += (postDatas == "") ? urlParam[0]+"="+urlParam[1] : "&"+urlParam[0]+"="+urlParam[1] ;
} |
dans la methode d'une autre classe où j'envoie la listeParam de tout a l'heure par valeur cette fois, et bien je recois une erreur d'index... (index out of range pour etre précis.)
Sauriez vous m'aider ?
Avez vous besoin de plus de précisions ?
Merci d'avance ! :D