salut,

suite au conseil de transformer mes structures en classes dans un autre topic, je me suis exécuté et retrouvé fasse à un problème bizarre:

voici la classe qui était une structure

Code : 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
    public class Entree
    {
 
        private double montant;
        private string lieu;
        private string type;
        private string motsCle;
        private DateTime date;
        private int id;       
 
 
        public double Montant
        {
            get { return montant; }
            set { montant = value;}
        }
        public string Lieu
        {
            get { return lieu; }
            set { lieu = value; }
        }
 
        public string Type
        {
            get { return type; }
            set { type = value; }
        }
 
        public string MotsCle
        {
            get { return motsCle; }
            set { motsCle = value; }
        }
 
        public DateTime Date
        {
            get { return date; }
            set { date = value; }
        }
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
    }
et le code l'utilisant:

Code : 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
32
33
34
35
36
37
38
39
40
41
42
43
  private List<Entree> tab = new List<Entree>();
 
        public Donnees(){
 
            if (File.Exists(fileName))
            {
                BinaryReader binReader = new BinaryReader(File.Open(fileName, FileMode.Open));
                try
                {
                    // determine if the file is empty.
                    byte[] testArray = new byte[3];
                    int count = binReader.Read(testArray, 0, 3);
 
                    if (count != 0)
                    {
                        // Reset the position in the stream to zero.
                        binReader.BaseStream.Seek(0, SeekOrigin.Begin);
                        SeekOrigin i = SeekOrigin.Begin;
                        Entree e = new Entree();
 
 
                        while (i != SeekOrigin.End)//on lit jusqu'a la fin du fichier
                        {             
                            e.Lieu = binReader.ReadString();
                            e.Type = binReader.ReadString();
                            e.MotsCle = binReader.ReadString();
                            e.Montant = binReader.ReadDouble();
                            e.Date = DateTime.FromFileTime(binReader.ReadInt64());
                            e.Id = binReader.ReadInt32();
                            i = SeekOrigin.Current;
 
                            tab.Add(e);
                        }          
                    }
                }
                catch{                   
                }
                finally
                {
                    binReader.Close();
                }
            }
        }
Avec une structure, ce code fonctionne parfaitement. Si je remplace struct par class, toute ma liste vaut la dernière valeur lue dans le fichier. pourtant il ne devrais pas y avoir de différences