0
votes

Différences entre propriété et propriété complète

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; }
}


5 commentaires

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; } Vous avez accès directement à la propriété. De l'autre manière, vous pouvez ajouter une logique à renvoyer o Définir la valeur.


3 Réponses :


2
votes

Le premier cas est en fait une forme abrégée du second dans lequel vous utilisez simplement le obtenez et définir accessoires pour récupérer et attribuer la valeur respectivement. < / p>

sans ajouter d'autre logique

Ils sont appelés comme propriétés mises en œuvre auto .

À propos de votre question sur pourquoi le premier Int est défini comme privé? Eh bien, c'est ce que les propriétés sont! Ils fournissent un mécanisme à lire, valeur d'écriture d'un champ privé .


2 commentaires

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; } , 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! :)



1
votes

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?

Et si nous voulions valider notre valeur? Nous pourrions faire quelque chose comme ceci: xxx

D'autres exemples pourraient être si vous devez recalculer quelque chose lorsque myProperty 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.


1 commentaires

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.



0
votes

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

Microsoft Docs

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.

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:

Public int MyProperty {GET; ensemble; } Est global dans votre projet xxx

Vous avez accès à myProperty et non myvar


1 commentaires

Merci, mais le lien n'explique pas les différences.