Certains fois, je vois des cours contient des propriétés déclarées comme ceci:
private int myVar; public int MyProperty { get { return myVar; } set { myVar = value; } }
3 Réponses :
Le premier cas est en fait une forme abrégée du second dans lequel vous utilisez simplement le sans ajouter d'autre logique p>
blockQuote>
Ils sont appelés comme À propos de votre question sur pourquoi le premier Int est défini comme privé?
Eh bien, c'est ce que les propriétés em> sont!
Ils fournissent un mécanisme à lire, valeur d'écriture d'un champ privé code>. P> obtenez code> et
définir code> accessoires pour récupérer et attribuer la valeur respectivement. < / p>
En ce qui concerne la deuxième partie de votre réponse, si nous déclarons la propriété comme celle-ci privé int myProperty {get; ensemble; } code>, le mécanisme de lecture de lecture ne fonctionne pas?
Il fonctionnera toujours. En définissant le modificateur d'accès à «Private» pour une propriété que vous pouvez maintenant lire, écrivez la valeur en utilisant d'autres membres d'une classe imbriquée dans la même classe! :)
Dans votre exemple, ils sont exactement les mêmes. Le premier est juste sténographié pour la seconde.
Alors pourquoi allions-nous utiliser la seconde? P>
Et si nous voulions valider notre valeur? Nous pourrions faire quelque chose comme ceci: p> D'autres exemples pourraient être si vous devez recalculer quelque chose lorsque myProperty code> est défini. Ou peut-être avez-vous besoin d'élever un événement pour laisser d'autres classes savoir que cela a été changé, etc. p> p>
Je vois, mais la validation pourrait être faite par l'appelant (logique mère) juste avant de définir la valeur. Si nous avons beaucoup de modules qui doivent mettre à jour / faire des calculs, nous allons vous retrouver avec un énorme setter.
en C #, l'encapsulation est un processus de liaison des éléments de données et des fonctions des membres dans une seule unité. En C #, la classe est l'exemple en temps réel pour l'encapsulation, car il combinera un type différent de membres de données et de fonctions de membre dans une seule unité.
son exemple p>
Par exemple, vous fournissez une bibliothèque et je ne veux pas qu'une deuxième personne ait beaucoup d'informations sur votre programme ou d'autres caractéristiques ou autres classes d'accès de classe. De cette manière, vous pouvez définir votre bibliothèque de la même manière que d'autres bibliothèques que nous utilisons dans le projet, mais nous n'avons pas accès à ses parties internes. Dans ce cas, vous encapsulez votre classe. P>
C'est-à-dire, vous ne pouvez pas accéder aux fonctions de classe ou aux fonctionnalités de la classe ailleurs dans le programme, par exemple: P>
Public int MyProperty {GET; ensemble; } Est global dans votre projet p> Vous avez accès à myProperty et non myvar p> p>
Merci, mais le lien n'explique pas les différences.
Utilisez ce lien: Stackoverflow.com/questions/1961536/...
C'est encapsulation: geeksforgeeks.org/c-sharp-capsulation
Le premier est une notation courte pour un cas d'utilisation commun.
@juanpe Le gueule explique la propriété complète mais n'indique pas les différences.
@Bromlem Recherche par ENCANSULAPTION.
PUBLIC INT MYPROPERTY {GET; ensemble; } code> Vous avez accès directement à la propriété. De l'autre manière, vous pouvez ajouter une logique à renvoyer o Définir la valeur.