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 :

Mot Clé Using [Débutant]


Sujet :

VB.NET

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut Mot Clé Using


    Simple question de débutant en VB.Net et ancien programmeur confirmé VB6, à quoi sert exactement le mot-clé Using dans VB.net ? J'ai rien trouvé de vraiment explicit sur le net à ce sujet !

    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836

  3. #3
    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 : 44
    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
    En gros, ça sert à ce que la méthode Dispose soit appelée automatiquement sur l'objet à la fin du bloc, même en cas d'erreur. Par exemple si tu écris ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Using s As Stream = OuvrirFichier()
     
        ' blabla
     
    End Using
    Le compilateur le transforme en quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim s As Stream
    Try
        s = OuvrirFichier()
     
        ' blabla
     
    Finally 
        If s IsNot Nothing Then
            s.Dispose()
        End If
    End Try
    (c'est pas tout à fait ça, mais c'est le principe)

    C'est donc un moyen simple de s'assurer qu'une ressource (fichier, connection DB, etc) soit bien libérée à la fin d'un bloc.

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Dans le cas d'utilisation d'un fichier par exemple ou tout autre flux qui doit être ouvert, ce bloc permet la fermeture automatique ? D'après les exemples que je vois un peu partout et même sur la MSDN, il font l'ouverture mais pas la fermeture, est-ce correct ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    en théorie il faudrait regarder le code pour savoir (le framework est codé en .net, et le .net est décompilable)

    mais en effet dans tous les cas que j'ai vu, la méthode Dispose appelle les méthodes de fermeture
    par exemple pour les DbConnection, la méthode Dispose appelle la méthode Close, ca ferme donc la connexion avant de libérer la mémoire non managée
    donc avec le using on est en théorie sûr de fermer la connexion en sortie de bloc, et même en cas d'erreur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    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 : 44
    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 Franck.H Voir le message
    Dans le cas d'utilisation d'un fichier par exemple ou tout autre flux qui doit être ouvert, ce bloc permet la fermeture automatique ?
    Oui c'est ça

    Citation Envoyé par Franck.H Voir le message
    D'après les exemples que je vois un peu partout et même sur la MSDN, il font l'ouverture mais pas la fermeture, est-ce correct ?
    Oui, la fermeture est implicite si le fichier est ouvert dans une instruction Using

    Citation Envoyé par Pol63 Voir le message
    le framework est codé en .net, et le .net est décompilable
    Pas entièrement
    Par exemple si tu regardes la classe string avec Reflector ou un autre décompileur, tu verras qu'il y a beaucoup de méthodes "extern" avec le flag MethodImplOptions.InternalCall : elles sont implémentées en code natif au niveau du CLR

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Ok c'est tout ce que je voulais savoir
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. Extraction de mots clés
    Par Olive1808 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 01/02/2016, 20h49
  2. Réponses: 3
    Dernier message: 24/03/2009, 09h13
  3. [langage] Reconnaissance de mots
    Par Flo. dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2002, 23h34
  4. Connaitre l'unitée à ajouter dans USES
    Par DelphiCool dans le forum Langage
    Réponses: 7
    Dernier message: 01/08/2002, 13h48

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