J'essaie de savoir si un objet (d'une classe dérivée) appartient à une
collection arraylist.
Je suis sûr que mes objets sont les mêmes (meme type notamment), mais je
n'arrive pas à trouver l'égalité. J'ai essayé par la méthode contains, par
équals, par ==, rien.
Quelqu'un a-t-il une idée ... Merci et bonne journée
Benoît
Class1 aClass1Bis = new Class1("GOGO"); foreach (Class1 objetClass1Bis in aArrayList) { if (aClass1Bis.Equals(objetClass1Bis)) { MessageBox.Show("Hour....."); --> Ne s'affiche pas } } MessageBox.Show(aArrayList.Contains(aClass1Bis).ToString()); --> Affiche False.
Alors tout est une histoire de référence sur les objets que tu manipules.
Dans le premier exemple, on recherche une référence d'un objet ajouté à la liste. Bien sûr, la référence existe.
Dans le seconde exemple, on crée un nouvel objet, qui n'a pas été ajouté à la liste... Alors il n'est pas trouvé dedans.
Dans le troisième exemple, on parcours la liste, en recherchant un objet à partir d'un attribut qui l'identifie. Bien sûr, on le trouve.
Cordialement,
-- James RAVAILLE. MCAD .NET et MCT .NET http://www.certifdotnet.com
"BR" a écrit dans le message de news:
Bonjour,
J'essaie de savoir si un objet (d'une classe dérivée) appartient à une collection arraylist. Je suis sûr que mes objets sont les mêmes (meme type notamment), mais je n'arrive pas à trouver l'égalité. J'ai essayé par la méthode contains, par équals, par ==, rien. Quelqu'un a-t-il une idée ... Merci et bonne journée Benoît
Bonjour,
Voici quelques exemples qui pourront t'aider....
Class1 aClass1 = new Class1("GOGO");
ArrayList aArrayList = new ArrayList();
Class1 aClass1Bis = new Class1("GOGO");
foreach (Class1 objetClass1Bis in aArrayList)
{
if (aClass1Bis.Equals(objetClass1Bis))
{
MessageBox.Show("Hour....."); --> Ne s'affiche pas
}
}
MessageBox.Show(aArrayList.Contains(aClass1Bis).ToString()); --> Affiche
False.
Alors tout est une histoire de référence sur les objets que tu manipules.
Dans le premier exemple, on recherche une référence d'un objet ajouté à la
liste.
Bien sûr, la référence existe.
Dans le seconde exemple, on crée un nouvel objet, qui n'a pas été ajouté à
la liste...
Alors il n'est pas trouvé dedans.
Dans le troisième exemple, on parcours la liste, en recherchant un objet à
partir d'un attribut qui l'identifie.
Bien sûr, on le trouve.
Cordialement,
--
James RAVAILLE.
MCAD .NET et MCT .NET
http://www.certifdotnet.com
"BR" <br@toto.fr> a écrit dans le message de news:
CE6819A5-6E62-4D55-82AD-CC9799B00291@microsoft.com...
Bonjour,
J'essaie de savoir si un objet (d'une classe dérivée) appartient à une
collection arraylist.
Je suis sûr que mes objets sont les mêmes (meme type notamment), mais je
n'arrive pas à trouver l'égalité. J'ai essayé par la méthode contains, par
équals, par ==, rien.
Quelqu'un a-t-il une idée ... Merci et bonne journée
Benoît
Class1 aClass1Bis = new Class1("GOGO"); foreach (Class1 objetClass1Bis in aArrayList) { if (aClass1Bis.Equals(objetClass1Bis)) { MessageBox.Show("Hour....."); --> Ne s'affiche pas } } MessageBox.Show(aArrayList.Contains(aClass1Bis).ToString()); --> Affiche False.
Alors tout est une histoire de référence sur les objets que tu manipules.
Dans le premier exemple, on recherche une référence d'un objet ajouté à la liste. Bien sûr, la référence existe.
Dans le seconde exemple, on crée un nouvel objet, qui n'a pas été ajouté à la liste... Alors il n'est pas trouvé dedans.
Dans le troisième exemple, on parcours la liste, en recherchant un objet à partir d'un attribut qui l'identifie. Bien sûr, on le trouve.
Cordialement,
-- James RAVAILLE. MCAD .NET et MCT .NET http://www.certifdotnet.com
"BR" a écrit dans le message de news:
Bonjour,
J'essaie de savoir si un objet (d'une classe dérivée) appartient à une collection arraylist. Je suis sûr que mes objets sont les mêmes (meme type notamment), mais je n'arrive pas à trouver l'égalité. J'ai essayé par la méthode contains, par équals, par ==, rien. Quelqu'un a-t-il une idée ... Merci et bonne journée Benoît
BR
Merci pour ta réponse, Je pensais (il me semble qu'en C c'est comme ça), qu'il y avait égalité de deux objets lorsque toutes les données membres étaient deux à deux égales. En fait la méthode equals de c# teste la référence de l'objet et non son contenu. Pour mes objets je vais créer un identifiant, ou bien surcharger equals !!! Bonne soirée Benoît
"James RAVAILLE" a écrit :
Bonjour,
Voici quelques exemples qui pourront t'aider....
Class1 aClass1 = new Class1("GOGO"); ArrayList aArrayList = new ArrayList();
Class1 aClass1Bis = new Class1("GOGO"); foreach (Class1 objetClass1Bis in aArrayList) { if (aClass1Bis.Equals(objetClass1Bis)) { MessageBox.Show("Hour....."); --> Ne s'affiche pas } } MessageBox.Show(aArrayList.Contains(aClass1Bis).ToString()); --> Affiche False.
Alors tout est une histoire de référence sur les objets que tu manipules.
Dans le premier exemple, on recherche une référence d'un objet ajouté à la liste. Bien sûr, la référence existe.
Dans le seconde exemple, on crée un nouvel objet, qui n'a pas été ajouté à la liste... Alors il n'est pas trouvé dedans.
Dans le troisième exemple, on parcours la liste, en recherchant un objet à partir d'un attribut qui l'identifie. Bien sûr, on le trouve.
Cordialement,
-- James RAVAILLE. MCAD .NET et MCT .NET http://www.certifdotnet.com
"BR" a écrit dans le message de news:
> Bonjour, > > J'essaie de savoir si un objet (d'une classe dérivée) appartient à une > collection arraylist. > Je suis sûr que mes objets sont les mêmes (meme type notamment), mais je > n'arrive pas à trouver l'égalité. J'ai essayé par la méthode contains, par > équals, par ==, rien. > Quelqu'un a-t-il une idée ... Merci et bonne journée > Benoît
Merci pour ta réponse,
Je pensais (il me semble qu'en C c'est comme ça), qu'il y avait égalité de
deux objets lorsque toutes les données membres étaient deux à deux égales.
En fait la méthode equals de c# teste la référence de l'objet et non son
contenu.
Pour mes objets je vais créer un identifiant, ou bien surcharger equals !!!
Bonne soirée
Benoît
"James RAVAILLE" a écrit :
Bonjour,
Voici quelques exemples qui pourront t'aider....
Class1 aClass1 = new Class1("GOGO");
ArrayList aArrayList = new ArrayList();
Class1 aClass1Bis = new Class1("GOGO");
foreach (Class1 objetClass1Bis in aArrayList)
{
if (aClass1Bis.Equals(objetClass1Bis))
{
MessageBox.Show("Hour....."); --> Ne s'affiche pas
}
}
MessageBox.Show(aArrayList.Contains(aClass1Bis).ToString()); --> Affiche
False.
Alors tout est une histoire de référence sur les objets que tu manipules.
Dans le premier exemple, on recherche une référence d'un objet ajouté à la
liste.
Bien sûr, la référence existe.
Dans le seconde exemple, on crée un nouvel objet, qui n'a pas été ajouté à
la liste...
Alors il n'est pas trouvé dedans.
Dans le troisième exemple, on parcours la liste, en recherchant un objet à
partir d'un attribut qui l'identifie.
Bien sûr, on le trouve.
Cordialement,
--
James RAVAILLE.
MCAD .NET et MCT .NET
http://www.certifdotnet.com
"BR" <br@toto.fr> a écrit dans le message de news:
CE6819A5-6E62-4D55-82AD-CC9799B00291@microsoft.com...
> Bonjour,
>
> J'essaie de savoir si un objet (d'une classe dérivée) appartient à une
> collection arraylist.
> Je suis sûr que mes objets sont les mêmes (meme type notamment), mais je
> n'arrive pas à trouver l'égalité. J'ai essayé par la méthode contains, par
> équals, par ==, rien.
> Quelqu'un a-t-il une idée ... Merci et bonne journée
> Benoît
Merci pour ta réponse, Je pensais (il me semble qu'en C c'est comme ça), qu'il y avait égalité de deux objets lorsque toutes les données membres étaient deux à deux égales. En fait la méthode equals de c# teste la référence de l'objet et non son contenu. Pour mes objets je vais créer un identifiant, ou bien surcharger equals !!! Bonne soirée Benoît
"James RAVAILLE" a écrit :
Bonjour,
Voici quelques exemples qui pourront t'aider....
Class1 aClass1 = new Class1("GOGO"); ArrayList aArrayList = new ArrayList();
Class1 aClass1Bis = new Class1("GOGO"); foreach (Class1 objetClass1Bis in aArrayList) { if (aClass1Bis.Equals(objetClass1Bis)) { MessageBox.Show("Hour....."); --> Ne s'affiche pas } } MessageBox.Show(aArrayList.Contains(aClass1Bis).ToString()); --> Affiche False.
Alors tout est une histoire de référence sur les objets que tu manipules.
Dans le premier exemple, on recherche une référence d'un objet ajouté à la liste. Bien sûr, la référence existe.
Dans le seconde exemple, on crée un nouvel objet, qui n'a pas été ajouté à la liste... Alors il n'est pas trouvé dedans.
Dans le troisième exemple, on parcours la liste, en recherchant un objet à partir d'un attribut qui l'identifie. Bien sûr, on le trouve.
Cordialement,
-- James RAVAILLE. MCAD .NET et MCT .NET http://www.certifdotnet.com
"BR" a écrit dans le message de news:
> Bonjour, > > J'essaie de savoir si un objet (d'une classe dérivée) appartient à une > collection arraylist. > Je suis sûr que mes objets sont les mêmes (meme type notamment), mais je > n'arrive pas à trouver l'égalité. J'ai essayé par la méthode contains, par > équals, par ==, rien. > Quelqu'un a-t-il une idée ... Merci et bonne journée > Benoît
Ambassadeur Kosh
c'est plutot à rapprocher d'Eiffel. en C, ça dépend du compilateur, du sens du vent...
Pour mes objets je vais créer un identifiant, ou bien surcharger equals !!!
un "truc" qui marche bien, c'est de se servir de l'objet comme identifiant. ie, a==b <=> id(a) == id(b) ainsi l'identité interne et externe est assumée, et trés simplement...
souvent, le comparateur est dissocié de la classe. il y'a assez peu de cas ou il est interessant d'avoir une surcharge du Equal. assurez vous que vous etes bien dans ce cas la.
c'est plutot à rapprocher d'Eiffel.
en C, ça dépend du compilateur, du sens du vent...
Pour mes objets je vais créer un identifiant, ou bien surcharger equals
!!!
un "truc" qui marche bien, c'est de se servir de l'objet comme identifiant.
ie, a==b <=> id(a) == id(b)
ainsi l'identité interne et externe est assumée, et trés simplement...
souvent, le comparateur est dissocié de la classe. il y'a assez peu de cas
ou il est interessant d'avoir une surcharge du Equal. assurez vous que vous
etes bien dans ce cas la.
c'est plutot à rapprocher d'Eiffel. en C, ça dépend du compilateur, du sens du vent...
Pour mes objets je vais créer un identifiant, ou bien surcharger equals !!!
un "truc" qui marche bien, c'est de se servir de l'objet comme identifiant. ie, a==b <=> id(a) == id(b) ainsi l'identité interne et externe est assumée, et trés simplement...
souvent, le comparateur est dissocié de la classe. il y'a assez peu de cas ou il est interessant d'avoir une surcharge du Equal. assurez vous que vous etes bien dans ce cas la.