【发布时间】:2019-11-03 21:55:03
【问题描述】:
我是 C# 的初学者,我创建了一个 Person 类,其中包含更多变量和一个构造函数:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Contact
{
[Serializable()] //On peut le sérializer
class Personne
{
//Constructeur
public Personne(string prenom, string nom, int age, string dateNaissance, bool isMan, string notes, string pathImage, string mail,
string mail2, string tel, string telFix, string site, string rue, string ville, string numero, string codePostal, string departement)
{
Prenom = prenom;
Nom = nom;
Age = age;
DateNaissance = dateNaissance;
IsMan = isMan;
Notes = notes;
this.pathImage = pathImage;
this.mail = mail;
this.mail2 = mail2;
this.tel = tel;
this.telFix = telFix;
this.site = site;
this.rue = rue;
this.ville = ville;
this.numero = numero;
this.codePostal = codePostal;
this.departement = departement;
}
public override string ToString()
{
return base.ToString();
}
//Variables
public string Prenom { get; set; }
public string Nom { get; set; }
public int Age { get; set; }
public string DateNaissance { get; set; }
public bool IsMan { get; set; }
public string Notes { get; set; }
public string pathImage { get; set; }
public string mail { get; set; }
public string mail2 { get; set; }
public string tel { get; set; }
public string telFix { get; set; }
public string site { get; set; }
public string rue { get; set; }
public string ville { get; set; }
public string numero { get; set; }
public string codePostal { get; set; }
public string departement { get; set; }
}
}
在我的表单上按下按钮时,此类对象的创建在这里完成:
private void Btn_valider_Click(object sender, EventArgs e)
{
//Création de l'objet
Personne contact = new Personne(Prenom, Nom, Age, dateNaissanceStr, isMan, notesStr, pathImage, mail, mail2, tel, telFix,
site, rue, ville, numero, codePostal, departement);
//Sauvegarde l'objet
Stream fichier = File.Create(@"contact.dat");
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(fichier, contact);
fichier.Close();
this.Close();
}
catch
{
MessageBox.Show("Erreur.");
}
}
}
}
所以,正如我们所见,我创建了一个联系人对象(我创建了一个联系人管理器),但我希望有多个 Person 对象,因为我们不只有一个联系人。但是,如果我重新创建一个对象,我的序列化程序只会获取最后一个创建的对象,我想恢复所有对象。
【问题讨论】:
-
但我希望有几个 Person 对象 ...这并不反映您的标题。您的问题与构造对象无关。它与文件的序列化有关。
-
嗨,Rayane。对于可维护的代码,我建议您用英文编写代码 - 变量名和 cmets。我假设您的意思是序列化/反序列化 Person 列表,而不是 Person。
-
是的,对不起,我错了,但我都需要。
-
这里有一些条件场景需要考虑,主要与文件是否存在以及您是要附加数据还是写入整个数据集合有关。它也与格式化程序有关。对于
BinaryFormatter,我不确定集合\数据数组的概念是否存储在文件中。如果这是一个文件,其中每个换行符代表一条新记录,您只需将数据附加到文件末尾的新行上,可以这么说。因此,这里需要考虑流位置、格式以及所需的操作和处理。