Probleme syntaxe C#

suethi75 Messages postés 101 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 31 août 2009 - 6 juin 2009 à 18:33
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 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();

            collectProgr = listProgr.chargementDansCollection();
            programme unProgramme = new programme(dtpFormProgrammeDate.Text, this.tbFormProgrammeHeure.Text, tbFormProgrammeSalle.Text, tbFormProgrammeLieu.Text);

            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();
                  
                }

            dtpFormProgrammeDate.Text = DateTime.Now.ToString();
            tbFormProgrammeHeure.Text = "";
            tbFormProgrammeLieu.Text = "";
            tbFormProgrammeSalle.Text = "";     
        }

Merci de votre aide

1 réponse

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
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;
   }
}

C# is amazing, enjoy it!
0
Rejoignez-nous