Salut !

J'ai un petit soucis avec un ArrayList. Je vous explique cela ( je tente ) , avant de vous exposé mon code.

En gros j'ai un objet a , qui est dans une boucle. Comme les tableaux dynamique n'existent apparemment pas en C#, j'utilise un arraylist pour ajouter (Al.add() ) ce que contient mon objet dans ce dernier.

Lors du premier passage dans la boucle, aucun soucis, lors du second passage, mon premier ajout est égale a mon second. Il y a de forte chance pour que si j'en ajouterai un troisieme de la même manière, les trois serais égaux ( au troiseme. )

Le problème est pour moi tout repéré : mon ArrayList ne garde pas les "valeurs" de ce que je lui passe, mais ( sans doute ) la reference sur mon objet.

Ma question est, Comment remédier à cela ?

Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
//myAl est déclaré plus haut ainsi : ArrayList myAL = new ArrayList();
XmlDocument XmlDoc = new XmlDocument();
XmlNodeList element;
CItem item=new CItem();
// Item est une classe qui contient deux entiers et un char
int i = 0;
int id = 0;
int temps = 0;
char vtype='\0';
 
XmlDoc.Load(path);
element = XmlDoc.DocumentElement.GetElementsByTagName("variable");
 
foreach (XmlNode node in element)
{
    foreach (XmlNode childnode in node)
    {
        if (childnode.LocalName.Equals("id"))
            id = int.Parse(childnode.InnerText);
        else if (childnode.LocalName.Equals("type"))
            vtype = childnode.InnerText.ToCharArray()[0];
        else
            temps=int.Parse(childnode.InnerText);
    }
    item.setItem(id, vtype, temps);
    myAL.Add(item);
}
 
for (i = 0; i < myAL.Count;i++ )
     MessageBox.Show(myAL[i].ToString()); // affiche toujours le dernier lu, au lieu d'afficher tous ceux qui ont été lu.

[EDIT] Je vous ajouter le fichier XML, ça sert à rien mais bon
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<config>
    <variable>
        <id>700</id> 
        <type>w</type> 
        <temps>5</temps> 
    </variable>
    <variable>
        <id>500</id> 
        <type>b</type> 
        <temps>7</temps> 
    </variable>
</config>
A bientot.