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 :

Afficher les éléments d'une liste avec un sub [Débutant]


Sujet :

VB.NET

  1. #1
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut Afficher les éléments d'une liste avec un sub
    Bon soir à tous. J'ai besoin de votre aide.
    J'ai une liste de noms que j'appelle: Noms
    Je fais entrer tous les noms qui se terminent par "id" dans une autre liste que je nomme: noms_Id
    pour afficher le contenu de noms_Id, pas de problème avec 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Imports System.Collections
    Module Module1
     
        Sub Main()
            Dim noms As New List(Of String) From {"Kalid", "Ahmed", "Walid", "Said", "Aziz", "Rachid", "mourad"}
            Dim noms_Id As New List(Of String)
            noms_Id = noms.FindAll(AddressOf SeTermineParId)
            For Each elem In noms_Id
                Console.WriteLine(elem)
            Next
            Console.ReadKey()
            'noms_Id.affiche
        End Sub
        Function SeTermineParId(s As String) As Boolean
            If s.Length > 2 And s.Substring(s.Length - 2) = "id" Then
                Return True
            Else
                Return False
            End If
        End Function
        'Sub affiche(ByVal lis As List(Of String))
        '    For Each elem In lis
        '        Console.WriteLine(elem)
        '    Next
        'End Sub
    End Module
    mais, pourquoi le code n’accepte pas :noms_Id.affiche ?
    Merci
    J'apprends la programmation pour le plaisir

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Concernant le "problème" évoqué : La classe List(Of T) ne possède aucune méthode affiche ; ce que tu cherches à faire serait plutôt affiche (noms_Id)

    Maintenant quelques remarques diverses :
    Tu n'as pas besoin du If dans ta fonction SeTermineParId ; en effet tel quel ton code dit "si ma condition est vraie renvoyer vrai sinon (si ma condition est fausse) renvoyer faux" ; autant directement renvoyer le résultat de ta condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function SeTermineParId(s As String) As Boolean
        Return s.Length > 2 AndAlso s.Substring(s.Length - 2) = "id"
    End Function
    Après on pourrait encore simplifier en utilisant déjà ce qui existe à savoir la méthode EndsWith de la classe String Return s.EndsWith ("id") ou encore passer par l'opérateur Like Return s Like "*id"

    Sur un autre plan tu pourrais utiliser pour affiche la même logique que celle utilisée avec FindAll en utilisant List(Of T).ForEach avec quelque chose dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    noms_Id.ForEach (AddressOf Afficher)
     
    Sub Afficher (ByVal s As String)
        Console.WriteLine (s)
    End Sub
    Et/ou carrément se passer de la méthode afficher (parce qu'après tout ce n'est qu'un nouveau nom pour la méthode Console.WriteLine déjà existante dans ce cas) avec noms_Id.ForEach (AddressOf Console.WriteLine)
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Et si le but est seulement l'affichage sur la console,
    Pour compléter la ligne tracée par Sehnsucht
    Citation Envoyé par Sehnsucht Voir le message
    ... Après on pourrait encore simplifier ...
    on peut appliquer le tout directement sur "noms"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            noms.FindAll(AddressOf SeTermineParId).ForEach(AddressOf Console.WriteLine)
    On perçoit la puissance des outils mis à notre disposition pour manipuler les collections.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #4
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Merci à vous.
    Return s.EndsWith, facilite bcp les choses (je ne savais pas que ça existe)
    Salut
    J'apprends la programmation pour le plaisir

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

Discussions similaires

  1. [Python 2.X] Afficher les éléments d'une liste dans une fenetre tkinter
    Par Anatole01 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/04/2015, 15h05
  2. [Débutant] Afficher les propriété d'une liste avec un item d'une autre liste
    Par jubourbon dans le forum Développement Sharepoint
    Réponses: 8
    Dernier message: 19/12/2013, 16h57
  3. Utiliser un controle utilisateur pour afficher les éléments d'une liste
    Par MiniCesc dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 05/10/2010, 15h13
  4. afficher les éléments d'une liste
    Par jane40 dans le forum Débuter
    Réponses: 1
    Dernier message: 18/01/2009, 22h22
  5. Réponses: 2
    Dernier message: 27/12/2005, 20h09

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