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 :

Mémoire et variable


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 117
    Par défaut Mémoire et variable
    Bonjour, j'ai une question concernant la mémorisation des variables dans VB.net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Public Function makeDeck() As List(Of Card)
            Dim lst As New List(Of Card)
            ' traitement de ma liste
            Return lst
        End Function
    Dans cette exemple je créé une liste que je traite et que je retourne. En adméttant que ma liste est lourd, est ce que VB.Net éfface "lst" après qu'elle sois retournée puisqu'elle ne sera plus réutilisée/réutilisable?

    Etant donné que je ne peux pas supprimer la liste avant et après le "return".

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour Guyome41,

    Il n'est pas question qu'elle soit lourde ou non , c'est une histoire de portée de variable.
    Dans ton cas si tu restes dans ta fonction tu peux travailler avec après ton instanciation (New) et avant le return ! L'emplacement mémoire est réservée puis supprimé.


    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 117
    Par défaut
    Salut, merci pour ta réponse. Donc pas la peine de faire un maVariable = Nothing avant une sortie de function ou sub, la variable est supprimée ?

  4. #4
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Guyome41 Voir le message
    Salut, merci pour ta réponse. Donc pas la peine de faire un maVariable = Nothing avant une sortie de function ou sub, la variable est supprimée ?


    Selon les cours sur la portée des variables (un des premiers cours ...o_O) : si tu déclares une variable dans une méthode (fonction ou procédure) elle n'est utilisable qu'à cet endroit et donc n'est plus utilisable lorsque tu sors du corps de la méthode.
    Une fonction fonctionne différemment mais tu seras obligés de créer une autre variable à l'extérieur si tu veux conserver ce résultat retourné.

    A+

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    un cours :
    http://plasserre.developpez.com/cours/vb-net/

    une variable déclarée dans un méthode est vidée en sortie de cette méthode, mais ce n'est que la variable qui est vidée, par le contenu (une variable pointe sur un contenu en gros)
    ici c'est une fonction donc c'est un peu différent, ce que tu return n'est pas supprimé, il est renvoyée à l'appelant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub a
      dim l as list(of card) = makeDeck
    end sub
    ce qui est créé par makedeck sera rangé ici dans l et l sera vidée en sortie de sub

    après si tu veux savoir comment fonctionne la mémoire en .net c'est un peu plus compliqué, car le list va rester en ram pendant plus ou moins longtemps

    quand on débute il ne faut pas s'inquiéter de la mémoire, preuve en est que si ton card contient 4 ou 5 propriétés simples (nombre, texte) et que tu en mets 1 millions dans le list ca devrait prendre quelques dizaines de Mo, soit rien de nos jours où les pc ont souvent 1 ou 2 Go de ram libre sous la main
    donc avec 52 cartes ca devrait aller ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 117
    Par défaut
    D'accord merci. Je vais lire le cours. J'ai appris en autodidacte donc j'ai surement dù oublier des bases xD.

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

Discussions similaires

  1. [TSX3721]Gestion mémoire et variables globales
    Par Patrick25300 dans le forum Automation
    Réponses: 4
    Dernier message: 20/12/2012, 17h19
  2. Garder en mémoire des variables
    Par Mandjames dans le forum ASP.NET
    Réponses: 3
    Dernier message: 11/05/2009, 15h40
  3. Réponses: 2
    Dernier message: 19/02/2009, 12h15
  4. Réponses: 1
    Dernier message: 19/04/2007, 21h52
  5. [VBA-E]Allocation de mémoire aux variables
    Par DomBourti dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 05/05/2006, 21h57

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