Salut la foule,

Après plusieurs années de développement Java, je suis passé voilà un an et demi au C#. Passage des plus aisé, à l'exception d'un point qui me pose un "problème", les accesseurs C#.

Depuis la nuit des temps, tous mes profs ont hurlé à qui voulait l'entendre que la bonne méthode pour modifier une valeur dans une classe consistait à utiliser les fameux get et set, et surtout pas l'accès à la variable public. Bref, c'est entré et c'est jamais ressorti...

Du coup, je ne comprends pas bien l'intérêt des accesseurs C#

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
 
public class MyClass {
  private string hello = "Hello World";
 
  public MyClass(){
  }
 
  public string Hello {
    set { hello = value; }
    get { return hello; }
  }
 
  static void Main(string[] args){
    MyClass mc = new MyClass();
    Console.Writeline(mc.Hello);
  }
}
Vous l'aurez compris, la ligne Console.Writeline(mc.Hello); va à l'encontre de tout ce que l'on m'a appris, dans la mesure où on a vraiment l'impression d'accéder à une variable public... (contrairement à un getHello() et setHello() où l'encapsulation est bien plus claire)

Quelle est l'intérêt de cette methode ? Est-ce que l'on ne risque pas de confondre un accès à une variable public et un accesseur ? S'agit-il simplement d'un fonctionnement comme un autre et, ma foi, faut bien s'y habituer ?

En vous remerciant.