On nous a souvent dit, il faut protéger l'encapsulation en faisant des accesseurs et des mutateurs (propriétés en C#) pour les champs de la classe, au lieu d'exposer les champs vers le monde extérieur.
Mais il y a beaucoup de fois où un terrain est juste là pour contenir une valeur et ne nécessite aucun calcul pour obtenir ou définir. Pour cela, nous ferions de ce numéro:
public class Book
{
private string _title;
public string Title
{
get{ return _title; }
set{ _title = value; }
}
}
Eh bien, j'ai une confession, je ne pouvais pas supporter l'écriture de tout ce qui (vraiment, c'est de n'avoir rien à écrire, il est obligé de le regarder), je suis donc allé voyous et utilisé les champs.
Puis vient le long de C# 3.0 et je vois qu'ils ajouté automatique des propriétés:
public class Book
{
public string Title {get; set;}
}
ce qui est plus propre, et je suis reconnaissant pour ça, mais vraiment, ce qui est si différent que de simplement faire un champ public?
public class Book
{
public string Title;
}