Ma méthode contains m'affiche toujours false pourtant mon objet existe bel et et bien dans la liste arraylist
Ma méthode contains m'affiche toujours false pourtant mon objet existe bel et et bien dans la liste arraylist
Bonsoir,
Vérifi que tu n'as pas d'espaces dans ta clé !
Peux-tu poster un exemple de code ?
Si ton type d'objet est un type référence (hors type de bases int/string/etc. ou struct), il faut que l'objet recherché soit la même instance que celui qui est présent dans le ArrayList, pas simplement "identique" (même valeurs) ni simplement du même type.
On ne jouit bien que de ce qu’on partage.
Il faut implémenter l'interface IEquatable comme marqué ici : https://docs.microsoft.com/en-us/dot...tframework-4.8
Règles du forum + Comment utiliser Developpez.com =
Découvrez le magazine gratuit de Developpez.com
Si vous développez en .NET, la FAQ, les tutos et l'aide MSDN sont vos amis !!!
Dvp.NET, la librairie .NET open source de Developpez.com
Un petit exemple complet :
Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
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
46
47
48
49
50
51
52
53
54
55
56 using System; using System.Collections.Generic; namespace ContainsExemple { public class Personne { public string Nom { get; set; } public string Prenom { get; set; } } public class PersonneEqualable : IEquatable<PersonneEqualable> { public string Nom { get; set; } public string Prenom { get; set; } public bool Equals(PersonneEqualable p) { return (p.Nom == Nom && p.Prenom == Prenom); } public PersonneEqualable(Personne source) { Nom = source.Nom; Prenom = source.Prenom; } } public static class Exemple { public static void Run() { Personne p1 = new Personne() { Nom = "Dupont", Prenom = "Jacques" }; Personne p2 = new Personne() { Nom = "Durant", Prenom = "Jules" }; PersonneEqualable pe1 = new PersonneEqualable(p1); PersonneEqualable pe2 = new PersonneEqualable(p2); List<Personne> personnes = new List<Personne>() { p1, p2 }; List<PersonneEqualable> personneequalables = new List<PersonneEqualable>() { pe1, pe2 }; Personne p = new Personne() { Nom = "Dupont", Prenom = "Jacques" }; PersonneEqualable pe = new PersonneEqualable(p); Console.WriteLine($"personnes contient p1 = {personnes.Contains(p1)}"); Console.WriteLine($"personnes contient p = {personnes.Contains(p)}"); Console.WriteLine($"personneequalables contient pe1 = {personneequalables.Contains(pe1)}"); Console.WriteLine($"personneequalables contient pe = {personneequalables.Contains(pe)}"); } } }
On ne jouit bien que de ce qu’on partage.
j'ai cru que personne va me répondre alors j'ai totalement oublier que j'ai poser une question désole et merci pour vos réponses
@StringBuilder
vous voulez dire que la méthode contains compare les références et non pas le contenu de la variable qu'on il s'agit d'un type non basique ?
On ne jouit bien que de ce qu’on partage.
si vous pouvez me fournir un autre exemple en java je serai reconnaissante parce que j'arrive toujours pas a régler ce problème
Euh... Java ?
Ici on parle de .NET
Certes, mon exemple est en C# sur le forum VB.NET, mais le Framework est le même, et le comportement de Contains est rigoureusement identique.
En revanche, aucune idée du comportement de cette méthode (si elle existe) avec Java... Je ne suis même pas sûr que le type string en Java soit aussi un type valeur et non pas un type référence comme en C++... Alors de là à parler du comportement des méthodes de classes avancées comme une liste...
On ne jouit bien que de ce qu’on partage.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager