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 : 66
    Points
    66

    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 : 66
    Points
    66

    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
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    juillet 2006
    Messages
    863
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : juillet 2006
    Messages : 863
    Points : 1 396
    Points
    1 396

    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.
    ___________________________________________________________________________________________________________
    Si mon message t'a aidé - Si au contraire, je suis hors sujet - Quand vous avez la réponse à votre question.
    Est notre ami

  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. [SERVEUR J2EE] Quelles différences entre les serveurs J2EE ?
    Par XavierZERO dans le forum Serveurs, conteneurs, et Java EE
    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