suethi75
Messages postés101Date d'inscriptionmercredi 5 novembre 2008StatutMembreDernière intervention31 août 2009
-
6 juin 2009 à 18:33
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 2017
-
6 juin 2009 à 19:51
Bonjour,
J'ai un soucis, je n'arrive pas à faire comparer deux objets, il ne rentre jamais dans la condition if.
Voici mon algo:
private void btFormProgrammeAjouter_Click(object sender, EventArgs e)
{
Boolean verif = false;
mesProgrammes listProgr = new mesProgrammes();
ArrayList collectProgr = new ArrayList();
programme ceProgramme = new programme();
for (int i = 0; i < collectProgr.Count - 1; i++)
{
ceProgramme = (programme)collectProgr[i];
if (ceProgramme.Equals(unProgramme))
verif = true;
}
MessageBox.Show(verif.ToString());
if (verif == true)
MessageBox.Show("Le programme est déja enregistré", "Enregistrement programme", MessageBoxButtons.OK, MessageBoxIcon.Stop);
else
{
// écrire dans le fichier xml
unProgramme.ecrireDansXml();
MessageBox.Show("Le programme a bien été enregistré", "Enregistrement programme", MessageBoxButtons.OK, MessageBoxIcon.Information);
dgvFormProgramme.Rows.Clear();
xmltodatagrid2();
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 6 juin 2009 à 19:51
Bonjour
l'égalité entre 2 objets se fait par défaut sur l'instance de l'objet, hors dans ton code tu fais un "new" à chaque fois, l'objet nouvelement créé ne peut donc être égal à un autre existant.
Si tu veux comparer 2 objets par leur contenu, et non pas leur instance, il faut que tu surcharges l'operateur "Equals"
ex:
public class Class1
{
public string Nom=null;
public override bool Equals(object obj)
{
return this.Nom == ((Class1)obj).Nom;
}
}