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

C# Discussion :

C# Quelle différence entre passage par ref et passage par out dans un param de métho?


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 67
    Points
    67
    Par défaut C# Quelle différence entre passage par ref et passage par out dans un param de métho?
    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2004
    Messages : 52
    Points : 60
    Points
    60
    Par défaut
    Avec le mot clé ref ta variable doit être instanciée avant l'appel de la méthode.
    Avec le mot clé out, ce n'est pas obligatoire.

    avec out
    Class myClass;
    myMethod(out myClass);

    avec ref
    Class myClass = new Class();
    myMethod(ref myClass);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 67
    Points
    67
    Par défaut ah bon ?
    en es tu sure ? Car sur mon bouquin (official course microsoft), ils disent à propos de out,
    "La méthode ne fabrique pas sa propre copie (ça ok). Le passage par paramètre out est semblable au passage par le paramètre ref (ok apriori), sauf que la méthode doit être assignée au paramètre out."
    et je ne comprends pas cette dernière phrase en fait.

    Tant pis sinon je me débrouillerai avec cette réponse.

    merci.

  4. #4
    Invité
    Invité(e)
    Par défaut
    il me semble que l'on utilise plus le "out" avec des types primitif ce qui permet de modifier le un parametres int par exemple dans une methode et qu'il soit toujours modifié en dehors de la methode.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 201
    Points : 132
    Points
    132
    Par défaut
    Lors de l'appel d'une méthode contenant le mot cléf ref, tu dois le signaler explicitement.

    Exemple:

    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
    27
    28
    ///// Passage avec mot clé "ref"
    ///////////////////////////////////////////////
    public void ModifValeurRef(ref int Valeur)
    {
       // Modification FACULTATIVE
       Valeur = X;
    }
     
    ///// Passage avec mot clé "out"
    /////////////////////////////////////////////// 
    public void ModifValeurOut(out int Valeur)
    {
       // Modification OBLIGATOIRE
       Valeur = X;
    }
     
    ///// Main méthod
    ///////////////////////////////////////////////
    static void Main()
    {
      int i = 0;
      int j;
      ModifValeurRef(ref i);
      ModifValeurOut(i);
     
      ModifValeurRef(ref j); // ne passe pas a la compilation
      ModifValeurOut(j);
    }

Discussions similaires

  1. Réponses: 67
    Dernier message: 16/12/2007, 13h41
  2. Réponses: 7
    Dernier message: 10/07/2006, 13h25
  3. Quelles différences entre TDBGrid et TJvDBGrid ?
    Par bds2006 dans le forum Delphi
    Réponses: 2
    Dernier message: 12/06/2006, 14h35
  4. [Type Sql] Quelles différences entre ces bases ?
    Par wonderboy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 16/03/2006, 09h38
  5. Quelle différence entre "réel simple" et "déc
    Par pyxosledisciple dans le forum Access
    Réponses: 2
    Dernier message: 11/01/2006, 11h51

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