IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Utilisation de IComparer


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Par défaut Utilisation de IComparer
    Bonjour à tous,

    C'est la premiere fois que j'utilise IComparer et je ne comprends pas bien pourquoi dans mon cas ça ne fonctionne pas.

    Code : 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
    Public Class Employes
            Inherits System.Collections.Generic.List(Of Employe)
    
        Public Sub New()
          Load()
        End Sub
        Public Sub Load()
           While oDBDataReader.Read()
              Me.Add(charge(oDBDataReader))
           End While
        End Sub
        Public Sub TrieParNom() As System.Collections.Generic.List(Of Employe)
              Me.Sort(New CMySort())   
        End Function
    
          Class CMySort
                Implements System.Collections.IComparer
                Sub New()
                End Sub
                Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements _
                System.Collections.IComparer.Compare
    
                    Dim E1 As Employe
                    Dim E2 As Employe
                    E1 = CType(x, Employe)
                    E2 = CType(x, Employe)
                    Return String.Compare(E1.Nom, E2.Nom)
                End Function
            End Class
    End Class
    Le compilateur me dit :
    La résolution de surcharge a échoué, car aucun 'Sort' accessible ne peut être appelé avec ces arguments*:
    'Public Sub Sort(comparison As System.Comparison(Of Employe))': Une valeur de type 'db.tables.employe.Employes.CMySort' ne peut pas être convertie en 'System.Comparison(Of db.tables.employe.Employe)'.
    'Public Sub Sort(comparer As System.Collections.Generic.IComparer(Of Employe))': Option Strict On interdit les conversions implicites de 'db.tables.employe.Employes.CMySort' en 'System.Collections.Generic.IComparer(Of db.tables.employe.Employe)'.

    merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Le tri sur une collection générique avec la méthode Sort ne permet pas l'utilisation d'un IComparer (il suffit de regarder le prototype sur la MSDN). Il faut utiliser l'équivalent générique, IComparer(Of T).

    Implémente IComparer(Of T) au lieu de IComparer et ça devrait être mieux

  3. #3
    Membre éclairé Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Par défaut
    Merci pour ta reponse.

    Mais j'ai deja essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Class CMySort
                Implements System.Collections.IComparer(Of Employe)
    Et Vb me dit :
    'System.Collections.IComparer' n'a pas de paramètres de type et donc ne peut pas avoir d'arguments de type.
    A moins que je n'ai rien compris.

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Normal c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Class CMySort
                Implements System.Collections.Generic.IComparer(Of Employe)
    Ou plus simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Class CMySort
                Implements IComparer(Of Employe)
    avec un Import de l'espace de noms.

  5. #5
    Membre éclairé Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Par défaut
    Grrr !

    merci merci merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Utilisation de l'interface IComparer
    Par Spiritkill dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/01/2015, 01h01
  2. Utiliser un IComparer dans une expression
    Par chris81 dans le forum Linq
    Réponses: 0
    Dernier message: 27/01/2009, 17h09
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo