La norme C# dit
§ 8.7.4
A propriété est un membre qui donne accès à une caractéristique d'un objet ou d'une classe. La longueur d'une chaîne de caractères, la taille d'une police, le titre d'une fenêtre, le nom d'un client, etc. sont des exemples de propriétés. Les propriétés sont une extension naturelle des champs. Les deux sont des membres nommés avec des types associés, et la syntaxe d'accès aux champs et aux propriétés est la même. Toutefois, contrairement aux champs, les propriétés ne désignent pas d'emplacements de stockage. Au lieu de cela, les propriétés ont des accesseurs qui spécifient les instructions à exécuter lorsque leurs valeurs sont lues ou écrites.
tandis que les méthodes sont définies comme
§ 8.7.3
A méthode est un membre qui implémente un calcul ou une action qui peut être effectué par un objet ou une classe. Les méthodes ont une liste (éventuellement vide) de paramètres formels, une valeur de retour (sauf si le type de retour de la méthode est void ), et sont soit statiques, soit non statiques.
Propriétés et méthodes sont utilisés pour réaliser encapsulation . Les propriétés encapsulent les données, les méthodes encapsulent la logique. Et c'est pourquoi vous devriez préférer une propriété en lecture seule si vous exposez des données. Dans votre cas, il n'y a pas de logique qui modifie l'état interne de votre objet. Vous voulez donner accès à une caractéristique d'un objet .
Si une instance de votre objet IsMapped
ou non est une caractéristique de votre objet. Il contient un contrôle, mais c'est pourquoi vous avez des propriétés pour y accéder. Les propriétés peuvent être définies en utilisant la logique, mais elles ne doivent pas exposer la logique. Comme l'exemple mentionné dans la première citation : Imaginez que le String.Length
propriété. Selon l'implémentation, il se peut que cette propriété boucle la chaîne et compte les caractères. Elle effectue également une opération, mais "de l'extérieur", elle ne donne qu'une déclaration sur l'état/les caractéristiques internes de l'objet.