problème lors d'une conversion d'une structure en classe
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:
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:
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 :?