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#] Pourquoi utiliser des undersores pour des variables ? [Débutant(e)]


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14
    Points : 17
    Points
    17
    Par défaut [C#] Pourquoi utiliser des undersores pour des variables ?
    bonjour, je code en [C#] sous visual studio express et
    j'aimerai savoir à quoi servent les _ devant les nom de variable
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      public Utilisateur(string Nom, int Age, char Sexe)
         {
           _Nom = Nom;
           _Age = Age;
           _Sexe = Sexe;
         }
    j'ai chercher dans les tutos mais je ne trouve pas, merci d'avance
    "Si un parfum sent mauvais... C'est raté"

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bonjour D-Link

    le langage n'a en fait que peu d'importance.
    Si ta classe possède 3 champs privés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class MaClasse
    {
        private string champs1;
        private int champs2;
        private char champs3;
        //...
    }
    tu remarques que c'est moi qui a décidé de leur nommage, j'aurais très bien pu choisir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class MaClasse
    {
        private string _Truc;
        private int machin;
        private char a;
        //...
    }
    les conventions de nommage sont souvent imposées par l'entreprise chez qui tu developpes. A ma connaissance, ce type de nommage avec Underscore est à éviter en Delphi mais pour le reste (notamment C#) cela est très courant d'utiliser _monchamps

    Donc pour l'exemple que tu as donné, lors de l'instanciation, ton constructeur peut implementer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Utilisateur
    {
        public Utilisateur(string nom, int age, char sexe) 
         { 
           this._nom = nom; 
           this._age = age; 
           this._sexe = sexe; 
         }
        private string _nom;
        private int _age;
        private char _sexe;
        //...
    }
    Sans oublier, que tu pourrais eventuellement ajouter des accesseurs (get/set) exposant ces champs
    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
    public class Utilisateur
    {
        public Utilisateur(string nom, int age, char sexe) 
         { 
           this._nom = nom; 
           this._age = age; 
           this._sexe = sexe; 
         }
        public string Nom
         { 
           get{return this._nom; } 
         }
        public int Age
         { 
           get{return this._age; } 
         }
        public char Sexe
         { 
           get{return this._sexe; } 
         }
        private string _nom;
        private int _age;
        private char _sexe;
        //...
    }
    voir ce lien Visual C# .NET Initiation
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par D-Link
    mais pourrai tu m'expliquer ce qu'est ce "this" que tu ajoutes devant les variables ?
    le mot clef this désigne l'objet courant. Quand tu ecrit une classe pour l'utiliser tu doit créer un objet avec new. Bien quand tu appelles dans les méthodes de ton objet et que tu veux désigner des variables de cet objet tu peux utiliser le mot clef this afin d'être sur de pointer sur la variable d'instance. A noter que l'utilisation de this
    n'est pas obligatoire sauf dans certain cas comme le suivant :

    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
     
     
    public class MaClass
    {
     
    private int arg1;
     
    public void MaMethode(int arg1)
    {
       arg1 = arg1; //ceci ne modifie pas la variable d'instance de MaClass, tu ne fait que affecter la variable à elle même.
     
      this.arg1 = arg1; //La il y a bien affectation de arg1 dans MaClass
    }
     
    }
    Citation Envoyé par D-Link
    par exemple qu'est ce qui s'execute en premier dans du code objet ?
    En tout premier c'est le contructeur qui est exécuter quand tu fait un new.

    Le contructeur est une fonction particuliere qui doit avoir le même nom que ta classe et qui ne renvoi rien.

    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
     
    public class MaClass
    {
     
    private int arg1;
     
    public MaClass(int arg1)
    {
      this.arg1 = arg1;
    }
     
    public void MaMethode(int arg1)
    {
       arg1 = arg1; //ceci ne modifie pas la variable d'instance de MaClass, tu ne fait que affecter la variable à elle même.
     
      this.arg1 = arg1; //La il y a bien affectation de arg1 dans MaClass
    }
     
    }
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14
    Points : 17
    Points
    17
    Par défaut merci
    merci bcp pour vos reponse precise et rapide, vous m'avez vraiment aidé, c'est tout ce qu'il fallait.
    "Si un parfum sent mauvais... C'est raté"

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

Discussions similaires

  1. Utiliser JOGL + shader pour des effets sur des images 2D.
    Par nouknouk dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 19/12/2007, 10h46
  2. Masquer des items pour une variable d'un tableau croisé dynamique en VBA
    Par Pietro_L dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/10/2007, 16h35
  3. Réponses: 17
    Dernier message: 22/12/2006, 15h28
  4. Réponses: 2
    Dernier message: 27/04/2006, 16h45
  5. Réponses: 3
    Dernier message: 29/10/2005, 14h13

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