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 :

Passage de paramètres de référence c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Par défaut Passage de paramètres de référence c#
    Bonjour,

    j'ai un problème avec le passage de paramètre en référence.

    Mon objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class MyIPadresse
    {
        public  String IP { set; get; }
    }
    Utils.cs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Utils
    {
        public static void changeValue(ref String s)
        {
          if (s.Equals("not changed"))
           {
              s = "was changed";
           }
         }
    }
    Program.cs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyIPadresse ip = new MyIPadresse();
    ip.IP= "not changed";
    Utils.changeValue(ref ip.IP);
    j'ai une erreur dans le paramètre de la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Utils.changeValue(ref ip.IP);
    Merci

  2. #2
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Comme stipulé dans la documentation
    Properties are not variables. They are methods, and cannot be passed to ref parameters.
    Soit en français:
    Les propriétés ne sont pas des variables. Ce sont des méthodes, et elles ne peuvent pas être passées en paramètres ref.

    Cordialement !

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Par défaut Solution
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
     class Utils
        {
            public static void changeValue(MyIPadresse s)
            {
                if (s.IP.Equals("not changed"))
                {
                    SetPropValue(s, "IP", "was changed"); 
                    //s = "was changed";
                }
     
            }
     
            public static object GetPropValue(object src, string propName)
            {
                return src.GetType().GetProperty(propName).GetValue(src, null);
            }
            public static void SetPropValue(object src, string propName, string val)
            {
                PropertyInfo piInstance = typeof(MyIPadresse).GetProperty(propName);
                if (piInstance != null) piInstance.SetValue(src, val, null);
            }
        }
     
    class MyIPadresse
        {
            public  String IP { set; get; }
            public int min { set; get; }
            public int max { set; get; }
     
            public static MyIPadresse StringToIp(String Settingvalue)
            {
     
                string[] str = Settingvalue.Split(',');
                String ip = str[0];
                int de = int.Parse(str[1]);
                int a = int.Parse(str[2]);
     
                return new MyIPadresse() { IP=ip, min=de, max=a  };
     
            }
        }
     
    class Program
        {
     
     
            static void Main(string[] args)
            {
                string s = "not changed";
                MyIPadresse ip = new MyIPadresse();
                ip.IP= "not changed";
                Utils.changeValue(ip);
                Console.WriteLine(ip.IP);
                Console.WriteLine("-fin-");
                Console.ReadKey();
     
            }
        }

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/08/2007, 17h34
  2. Passage de paramètres par référence
    Par margagn dans le forum Framework .NET
    Réponses: 2
    Dernier message: 08/05/2007, 23h08
  3. [POO] Passage de paramètre par référence.
    Par abidi_niz dans le forum Langage
    Réponses: 3
    Dernier message: 12/10/2006, 12h20
  4. [C#] passage de paramètres par référence
    Par SesechXP dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2006, 12h48
  5. [EJB] Passage des paramètres par référence
    Par salome dans le forum Java EE
    Réponses: 2
    Dernier message: 05/07/2005, 11h25

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