tech · 2 min de lecture

Java Vs C# : Les Property en C#

Comparaison de Java et C# sur les Property

Hugo
Hugo18 mars 2011 · 2 min
Java Vs C# : Les Property en C#

Warning, warning, ceci n'est pas une rubrique à troll !!

Bien qu'étant plutot spécialiste Java, je me suis mis récemment au C#. Loin des débats qui n'en finissent plus pour savoir lequel des deux p... le plus loin, je tenais à faire une petite rubrique pour lister "les trucs qui tuent" qui existent dans chaque langage et que tout bon développeur aime connaitre.

Et donc le truc qui tue du jour :

Les Property en C#

En C# comme en Java on respecte le principe d'encapsulation sur les attributs des classes. C'est à dire que les attributs sont déclarées private et ensuite on définit des getters et setters pour y accéder :

java
private int maVariable;

public void setMaVariable (int maVariable)
{
    this.maVariable = maVariable;
}
pubic int getMaVariable ()
{
    return maVariable;
}

Seul inconvénient, il est plus verbeux d'écrire ceci

java
maClasse.setMaVariable (maClasse.getMaVariable()+1)

que directement

java
maClasse.maVariable++;

En C# existe la notion de Property qui permet d'éviter l'utilisation de getter et setter :

csharp
public double Hours
{
    get
   {
        return seconds / 3600;
   }
   set
   {
       seconds = value \* 3600;
   }
}

Ce qui permet d'écrire :

csharp
maClasse.Hours = maClasse.Hours + 1;

et qui reviendra à :

csharp
maClasse.setSeconds (maClasse.getSeconds() + 1);

Et depuis la version 3.0, on peut même utiliser des la notion de Property auto-implémenté lorsque les getters et setters ne font rien de spécial :

csharp
public int ID { get; set; }

Et en Java ?

A priori rien de prévu pour imiter cette syntaxe en Java pour l'instant. Cependant certains frameworks utilisent l'instrumentation de code pour reproduire le même comportement. Avec Play! la syntaxe est même allégé par rapport aux Property de C# :

java
public int maVariable;
...
monObjet.maVariable = monObjet.maVariable+1;

Les getters et setters sont automatiquement générés par Play. Si cependant un getter ou un setter a été défini, il sera utilisé à la place des accesseurs générés par Play!.

Hugo

Écrit par

Hugo

Software Engineer with more than 20 years of experience. I love to share about technologies and startups

Vous avez aimé ce récit ?

Environ un mail par mois, quand un texte mérite d'être écrit. Vos lecteurs restent vos lecteurs.

205 abonnés · désabonnement en un clic

À lire aussi

Java Vs C# : Les paramètres nommés et optionnels en C#

Comparaison de Java et C# sur les paramètres nommés et optionnels

3 févr. 2011
Java Vs C# : Les paramètres nommés et optionnels en C#

Java Vs C# : Les types valeurs en C#

Comparaison de Java et C# sur les types valeurs

1 mai 2011
Java Vs C# : Les types valeurs en C#

Java Vs C# : La gestion des exceptions

Comparaison de Java et C# sur la gestion des exceptions

23 mars 2011
Java Vs C# : La gestion des exceptions

Réponses

0 Commentaire

Pas encore de commentaire. Soyez le premier !