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 :

Explication de syntaxe


Sujet :

VB.NET

  1. #1
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut Explication de syntaxe
    Salut à tous,

    Je développe des sites web en ayant une connaissance rudimentaire de vb.net. J'ai eu à résoudre le problème commun de tri d'un objet Dictionary. Pour cela google m'a aidé et a trouvé ce code :
    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
    Private Function trierDictionary(ByVal d As Dictionary(Of String, Integer)) As Dictionary(Of String, Integer)
      Dim liste As New List(Of KeyValuePair(Of String, Integer))(d)
      Dim retour As New Dictionary(Of String, Integer)
      liste.Sort( _
        Function( _
          premiere As KeyValuePair(Of String, Integer), _
          deuxieme As KeyValuePair(Of String, Integer) _
        ) _
        deuxieme.Value.CompareTo(premiere.Value) _
      )
      For Each ligne As KeyValuePair(Of String, Integer) In liste
        retour.Add(ligne.Key, ligne.Value)
      Next
      Return retour
    End Function
    Or ce code pour moi est un code de haute voltige et je n'aime pas ne pas comprendre ce que j'utilise. Je demande donc votre aide afin de m'éclairer sur quelques points :
    1) Que veut dire (d) en fin de déclaration de liste? Je devine un genre de source peuplant la liste, mais je ne trouve pas la référence expliquant cette syntaxe. En avez-vous une?
    2) Quelle est le fonctionnement de List.Sort()? Suivant la valeur retournée par l'expression lambda (inférieure, supérieure ou égale à zéro) la méthode trie la liste? C'est tout? Je ne comprends pas la documentation msdn sur cela.

    Pouvez-vous m'éclairer?

    Merci par avance.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  2. #2
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    J'ai une suggestion pour toi.

    Tu peux utiliser un SortedList qui implémente justement le Dictionnary.
    http://msdn.microsoft.com/fr-fr/libr...19(VS.80).aspx
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  3. #3
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Non, SortedList trie les clés, or je souhaite trier les valeurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    second.Value.CompareTo(first.Value)
    Mais merci tout de même d'avoir pris le temps de me lire.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  4. #4
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    Et si tu inverses ta clé et ta valeur? Je sais que c'est pas super clean, mais ça devrait marcher, non?
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  5. #5
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par yroubag Voir le message
    Et si tu inverses ta clé et ta valeur? Je sais que c'est pas super clean, mais ça devrait marcher, non?
    Non, c'est pas clean.

    En règle général, la clé est unique... la valeur non...

    En fait tu déclare un object List(Of KeyValuePair(Of String, Integer)) qui prend en paramètre d.

    Ne pas se faire pièger par les premières parenthèses de List qui sert à instancier le "Type de List". Les deuxièmes parenthèses reçoivent, elles, les paramètres...

  6. #6
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    Sinon tu as des trucs sympas du côté des extensions du namespace System.Linq.

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    1) Que veut dire (d) en fin de déclaration de liste? Je devine un genre de source peuplant la liste, mais je ne trouve pas la référence expliquant cette syntaxe. En avez-vous une?
    ça correspond au constructeur New List(Of ...)(IEnumerable(Of T)) car un Dictionary est bien un IEnumrable de KeyValeurPair. La liste est donc construite à partir de tout les couples clef/valeur du dictionnaire.

    Citation Envoyé par franculo_caoulene Voir le message
    2) Quelle est le fonctionnement de List.Sort()? Suivant la valeur retournée par l'expression lambda (inférieure, supérieure ou égale à zéro) la méthode trie la liste? C'est tout?
    Exactement ... c'est du tri.
    Si mes souvenirs sont bon en gros List.Sort fait du QuickSort

  8. #8
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Merci à tous pour vos réponses. Je comprends mieux l'historie du tri, ainsi que pour le constructeur. Par contre auriez-vous une référence concernant celui-ci? C'est ce qui me frustre, MSDN ne m'a pas beaucoup aidé sur ce coup-ci, je souhaiterais donc savoir où trouver cette information précise. MSDN est vraiment volumineux...
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  9. #9
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    Par contre auriez-vous une référence concernant celui-ci?
    Concernant le tri ?
    Citation Envoyé par MSDN
    Cette méthode utilise System.Array.Sort, qui se sert de l'algorithme QuickSort. Cette implémentation effectue un tri instable ; autrement dit, lorsque deux éléments sont égaux, leur ordre risque de ne pas être respecté. En revanche, une opération de tri stable ne modifie pas l'ordre d'éléments égaux.

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

Discussions similaires

  1. Explication de syntaxe
    Par kaking dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/06/2008, 10h28
  2. [Tableaux] Explication de syntaxe
    Par n1portki dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2007, 00h06
  3. [débutant] explication de syntaxe
    Par cyrill.gremaud dans le forum Langage
    Réponses: 4
    Dernier message: 13/11/2006, 14h19
  4. [AS] Besoin d'explication de syntaxe
    Par mdtdamien dans le forum Flash
    Réponses: 2
    Dernier message: 17/12/2005, 13h39
  5. explication syntaxe requete sur pgsql
    Par alain.lc dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 08/12/2004, 10h24

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