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 :

Forcer la destruction d'une variable


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 70
    Par défaut Forcer la destruction d'une variable
    Bonjour

    Voilà, j'aimerais savoir si en Visual Basic, il existe une fonction, propriété ou autre qui permet de dé-assigner une variable avant que celle-ci n'ait atteint la fin de son module, fonction, etc..

    J'ai vu par exemlpe qu'il existait la fonction Erase pour les tableau, il y en à t-il d'autres concernant variables et objets divers?


    Merci d'avance si quelqu'un connait ce genre de fontion

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 193
    Par défaut
    Si c'est une objet "simple" il suffit de mettre la variable à null
    Le Garbage collecteurs liberera la place
    (tu peux forcer le passage du GC)
    Sinon pour les objets utilisant des resources non managées (fichier, connection réseau, ect) il faut implémenter l'interface IDisposable()

    Tu pourras alors utilisé Using , ou appelle la méthode Dispose()

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 70
    Par défaut
    Merci pour le Dispose()

    Et, mettre une variable à NULL fait que plus aucune place en mémoire ne lui est attribué? Cependant, elle reste toujours déclaré, non?

    EDIT: Même question pour le Nothing ^^

    Ben, pour le moment j'ai pas d'application concrète, c'est juste le fait d'avoir été obligé de mettre une variable temporaire pour clarifier le code, mais celle-ci me sert juste l'espace de quelques lignes. De ce fait, j'ai eu envie de savoir si j'avais un moyen de m'en débarasser sans attendre : Pas besoin de garder une variable inutile :p

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 193
    Par défaut
    Les variables n'ont de porté que dans le block ou elles sont déclarés

    Donc si tu as une variable dans une fonction, elle ne sera accecible que dans cette fonction
    Si tu l'as déclare dans un if , elle ne sera accecible que dans celui-ci
    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IF (....) THEN 
    Dim i As Integer
    'i existe
    END IF
    'i n'existe plus

    Pour le null c'est l'équivalent en c# du Nothing en VB

    Null/Nothing ne peuvent être utilisé qu'avec des objets de type référence (donc pas les Integer,Long,...)

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 70
    Par défaut
    Merci Benoit, mais cela je le sais :p
    Ma question concerne les blocs beaucoup plus grand.

    If...Then
    ...
    ...
    ...
    Déclaration
    Utilisation
    Destruction
    ...
    ...
    End If

    Et pour le GC, comment en forcer le passage? Peut-être connaissez vous un tuto détaillant son fonctionnement et les commandes associées en VB?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 193
    Par défaut
    On ne fait pas de bloque plus grand, on découpe son programme en fonctions

    Pour le Garbage Collector: GC.Collect()

    Mais :
    1) Avec les machines actuels tu n'as pas a te soucier d'une variable...*
    2) L'appel au GC est lourd et donc à éviter

    De plus quand tu mets ta varible à Nothing , elle ne sera libéré réellement que quand le GC passera donc "rien" ne sert de mettre ta variable à Nothing si tu vas bientot quitter le block où celle-ci a été déclarée

    L'utilisation de la destruction d'objet n'a de sens que pour les fichiers,connection réseau,connection bd** et d'autre cas...

    * J'ai pas dit qu'il fallait faire n'importe quoi non plus mais avec les DataSet/ le Binding, la couche graphique c'est pas un ou deux variables qui vont changer grand chose aux performances

    **Et encore tu ne gères plus réellement la connection à la base de donnée en général il y a un pool de connection caché derrière

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Maniz Voir le message
    Voilà, j'aimerais savoir si en Visual Basic, il existe une fonction, propriété ou autre qui permet de dé-assigner une variable avant que celle-ci n'ait atteint la fin de son module, fonction, etc..
    Mais pourquoi veux-tu faire ça au juste ?

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/04/2010, 21h14
  2. Forcer le type d'une variable
    Par jderam dans le forum Débuter
    Réponses: 2
    Dernier message: 29/04/2009, 21h04
  3. destruction d'une variable de session
    Par fattouch_squall dans le forum Langage
    Réponses: 2
    Dernier message: 12/12/2007, 22h13
  4. Forcer l'emploi d'une variable dans Procedure
    Par Arvulis dans le forum Oracle
    Réponses: 2
    Dernier message: 17/06/2006, 10h58
  5. Réponses: 5
    Dernier message: 25/05/2005, 22h29

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