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

Framework .NET Discussion :

Question sur IDispose


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut Question sur IDispose
    Salut tout le monde,

    Je me pose une question quand à la meilleure méthode à utiliser.

    Voici trois codes qui pour moi font la même chose


    Code avec IDispose:

    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
     
    public class Essai :IDisposable
    {
        private SHA1CryptoServiceProvider m_sha1=null;
     
        byte[] ICryptage.CreerHash(SecureString source)
        {
           //Utilisation de m_sha1
        }
     
        public void Dispose(Boolean disposing)
        {
                        if (m_sha1 != null)
                        {
                            m_sha1.Clear();
                            m_sha1 = null;
                        }
        }            
    }
    Code avec using:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Essai 
    {
        byte[] ICryptage.CreerHash(SecureString source)
        {
           using (SHA1CryptoServiceProvider m_sha1 = new SHA1CryptoServiceProvider ())
           {
           //Utilisation de m_sha1
           }
        }         
    }
    code avec try finally:

    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
     
    public class Essai 
    {
        byte[] ICryptage.CreerHash(SecureString source)
        {
          SHA1CryptoServiceProvider m_sha1 = new SHA1CryptoServiceProvider ();
          try
          {
            //utilisation de SHA1CryptoServiceProvider 
          }
          finally
          {
            m_sha1.Clear();
            m_sha1 = null;
          }
        }         
    }
    Quel est le meilleur ?
    Quand est ce que je dois utiliser l'un ou l'autre ?

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Entre utiliser une clause using ou un try/finally cela revient au même. En gros à la compilation une clause using deviendra un try/finally. La clause using à l'avantage de la lisibilité, notamment si on empile les using. Les 2ème et 3ème exemples sont donc identiques.

    L'exemple 1 est valide aussi si l'objet de ton algorithme de hachage (ici SHA1CryptoServiceProvider) ne doit être instancié qu'une fois. L'objet est alors un membre de la classe et à ce moment la classe doit implémenter IDisposable puisque SHA1CryptoServiceProvider implémente aussi IDisposable (via la classe de base HashAlgorithm).

    Si tu peux te permettre de réinstancier l'objet SHA1CryptoServiceProvider à chaque fois, les méthodes 2 et 3 sont bonnes.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    Merci pour ton explication StormimOn.
    Je comprend mieux le fonctionnement.

    Cordialement

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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