Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Nouveau Membre du Club
    Inscrit en
    février 2007
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 121
    Points : 34
    Points
    34

    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
    Inscrit en
    juin 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : juin 2004
    Messages : 52
    Points : 53
    Points
    53

    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
    Nouveau Membre du Club
    Inscrit en
    février 2007
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 121
    Points : 34
    Points
    34

    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 Expert
    Homme Profil pro Guillaume
    Développeur .NET
    Inscrit en
    juillet 2006
    Messages
    862
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume
    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 : 862
    Points : 1 262
    Points
    1 262

    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 régulier
    Inscrit en
    février 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 201
    Points : 93
    Points
    93

    Par défaut

    Lors de l'appel d'une méthode contenant le mot cléf ref, tu dois le signaler explicitement.

    Exemple:

    Code :
    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);
    }

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •