Propriétés et accesseurs
Propriétés et accesseur sont ensemble afin fortement corrélés qu’il est impossible de les traiter séparément. Propriété (appelé Propriétés –. Parfois, vous pouvez rencontrer avec le terme dérivé du nom anglais « propercje » ou la propriété condensée) est une conception spéciale qui combine des aspects de ces deux domaines et méthodes. Il vous permet d’accéder ? des variables privées objet ? travers une méthode spéciale qui accesseurs. Une caractéristique importante est que l’objet de l’utilisateur les voit comme des variables ordinaires disponibles au public. Ils vous permettent d’effectuer des opérations simples comme une variable, et aussi permettre l’utilisation de leurs interfaces.
Les méthodes d’acc?s utilisées sont équivalentes pendant une longue période dans les langages de programmation orientés objet, permettant de lire et d’enregistrer des champs de classe privées. En raison de l’encapsulation, tous les champs de la salle de classe doivent ?tre cachés, et l’acc?s éventuel ? leur mise en ?uvre par le procédé prévoyant en outre des entrées de commande. Ces méthodes sont appelées « setterami » et « getterami« .
Menu wpisu
Accesseurs et settery i gettery
Code de syntaxe qui utilise le setter et getter est présenté ci-dessous:
class Wartosci { private int liczba; public int get_liczba() { return liczba; } public void set_liczba(int iLiczba) { liczba = iLiczba; } }
Exemple semble ?tre un moyen pratique et cohérent, mais les méthodes ne sont pas liées, peuvent ?tre situés dans des lieux différents vaste classe, et dans le cas de beaucoup de variables, ce qui peut se développer ? traiter avec de nombreuses lignes de code. En utilisant de tels procédés comme suit:
static void Main(string[] args) { Wartosci wart = new Wartosci(); //Définir la valeur wart.set_liczba(12); //Valeurs lues MessageBox.Show(wart.get_liczba()); }
Accesseur effectuer exactement la m?me tâche, mais l’utilisation des variables devient plus commode. Ci-dessous sont présentées précédemment exemples d’utilisation accesseur:
class Wartosci { private int _liczba; public int liczba { get { //activé quand une valeur est lue return _liczba; } set { //activé lorsque la valeur est définie _liczba = value; } } }
Dans l’eau il ya méthodes get et set, elles sont équivalentes aux méthodes de l’exemple précédent. En outre, ces procédés de compilateur en fait se posent. Au moment de déclarer les propriétés appelé le liczba, le compilateur réservé méthode noms get_liczba et set_liczba, de sorte qu’il est impossible de les définir ? nouveau, et la tentative échouera:
Type ‘wartości’ réserve déj? un membre appelé ‘get_liczba’ avec les m?mes types de param?tres
Un élément intéressant de la propriété est le mot-clé value. Il est une variable temporaire vous permet d’effectuer des transactions sur la valeur actuellement saisi, par exemple. Lorsque l’affectation liczba = 10; valeur de la variable sera fixé ? 10.
Utilisation d’une variable déclarée par les propriétés comme suit:
static void Main(string[] args) { Wartosci wart = new Wartosci(); //Les valeurs de réglage wart.liczba = 12; //Valeurs de lecture MessageBox.Show(wart.liczba); }
Comme il a été mentionné au début de l’article, les opérations sont exactement comme sur une variable ordinaire partagé publiquement.
Les propriétés de conception
Toutes les propriétés ne peuvent accesseur récupérer la valeur, mais la valeur accesseur set ou deux accesseurs ? la fois. Cela permet une variable avec un acc?s limité – la variable en lecture seule, en écriture seule ou en lecture-écriture. Toujours get accesseur doit retourner par mot-clé return.
Obtenez accesseur est activé lorsque la lecture des valeurs, un accesseur set quand les valeurs de réglage. Ils sont alors toutes les opérations contenues dans accolades accesseur. Actions placés ? effectuer dans akcesorach ne devraient pas ?tre trop compliqué. En outre, le style de programmation est incorrecte pour modifier le champ dans l’accesseur get, par exemple.:
public int Liczba { get { return liczba++; //Cela ne doit pas ?tre utilisé } }
Il est admis, cependant, le calcul de la valeur de retour, par exemple.:
public string Nazwa { get { return nazwa != null ? nazwa : "no name"; } }
La propriété se compose de seulement deux éléments: définir et obtenir, sans la possibilité de télécharger les param?tres. Il est interdit d’utiliser des champs supplémentaires, les méthodes, et d’autres propriétés. Les propriétés doivent avoir au moins un accesseur.
Déclaration sommaire
Échangeant les méthodes habituelles de la propriété en partie aidé ? organiser le code, mais ne soyez pas significativement raccourcie. Depuis les accesseurs souvent utilisés, comme dans les exemples décrits précédemment, ils ne changent pas la valeur, pour la médiation acc?s ? l’introduit (version C # 3.0) de déclaration sommaire.
Il réduit le code ci-dessous:
class Wartosci { private int _liczba; public int liczba { get { return _liczba; } set { _liczba = value; } } }
dans un tr?s court fiche:
class Wartosci { public int liczba{get;set;} }
Les deux dossiers sont égaux, parce que le compilateur va développer déclaration sommaire, ainsi que crée implicitement une boîte privée, qui peut ?tre consulté réalise biens sauvés. Cela vous permet de réduire considérablement l’épargne et augmenter code de transparence.
En conclusion. Rédaction de la déclaration sommaire ci-dessus appelé liczba crée implicitement une variable et méthode privée noms get_liczba() et set_liczba() permettant l’acc?s ? la variable.
Les opérateurs et les propriétés
Propriétés contrairement aux méthodes classiques permettent également l’utilisation d’opérateurs nécessitant deux lire et écrire des valeurs. Ces opérations fonctionnent sans construire déclarations supplémentaires. Les opérations suivantes sont sur les valeurs des exemples et des informations précédentes, qui a été lancé accesseur:
static void Main(string[] args) { Wartosci wart = new Wartosci(); int m = wart.liczba; //Le bloc get dla Propriétés wart.liczba = m; //Le bloc set dla Propriétés wart.liczba -= 12; //Le bloc get i set dla Propriétés wart.liczba += 18; //Le bloc get i set dla Propriétés }
Valeur de Supervision
Les valeurs des champs qui ont été rendus publics, ne sont pas en aucune façon contrôlée. Cela peut entraîner de graves dysfonctionnements classe, ou m?me l’ensemble du programme. Erreurs menant ? un déversement rapide du programme sont beaucoup mieux que le long terme, ne pas donner de lui-m?me de connaître les erreurs affectant les résultats. Trouver une telle erreur, il faudra beaucoup de temps et de retracer souvent la majorité de code écrit. Certaines valeurs exemples de base ? surveiller sont: secondes / minutes (1-60), heures (1-12 / 1-24), l’évaluation (1-6), les études d’évaluation (2; 3; 3,5; 4; 4,5; 5) et beaucoup d’autres. Exemple de code:
class Wartosci { private int _godzina; public int godzina { set { if (value >= 1 && value <= 24)//pour un affichage de 24 heures _godzina = value; } } }
Contrôler les valeurs d’entrée dans le code qui utilise les objets de classe peut conduire ? de nombreux effets indésirables. Le code doit ?tre répété dans un endroit o? les données sont saisies, le développeur peut oublier ou le faire de façon incorrecte, vous pouvez spécifiquement conduire la classe d’écrire des valeurs incorrectes. Ces raisons sont suffisantes pour assurer l’exactitude des informations enregistrées. L’endroit idéal pour contrôler les valeurs d’entrée sont fixés accesseur. Il vous permet non seulement de définir les valeurs dans un facile de localiser place, mais aussi de changer rapidement les r?gles tout au long du programme, par exemple. Si la portée de l’évaluation allait changer ? 1-10.
Accesseur servir une autre fonction importante associée aux valeurs de contrôle. Données de lecture et d’écriture peuvent ne pas ?tre une variable simple. Que faire si, lorsque vous travaillez avec des bases de données et des données de terrain est stocké dans la base de données? Obtenez accesseur dans ce cas, il peut poursuivre la collecte des valeurs, et un vérifier si la valeur est compatible avec les champs de type dans la base accesseur ensemble et ? écrire quand il est correct. Le développeur utilise la classe est pas de connexion important de la base de données, il voit la valeur comme une simple variable. Le travail sur le m?me code pour de nombreux programmeurs est également l’une des nombreuses raisons pour lesquelles l’utilisation de la propriété.
Dans akcesorach vous pouvez utiliser d’autres méthodes. Si la valeur de contrôle est soumis aux m?mes conditions que pour les secondes et minutes, il est possible de préparer le procédé de fabrication de la valeur de contrôle et l’utilisation ultérieure d’entre eux dans akcesorach.
Pour quelles propriétés utilisation?
Si vous n’?tes pas réussi ? convaincre les propriétés de l’application, il citer un autre deux exemples.
Exemple 1:
Supposons que la variable (int) en classe est le résultat de l’opération, et sa valeur fait partie des noms de fichiers enregistrés. Apr?s les modifications apportées au programme, il est nécessaire d’ajouter le préfixe dans le nom de caract?re:
"wyniki_" + zmienna.ToString();
Modification des noms tout au long du programme peut prendre un certain temps, et il ya toujours un risque d’omission d’une certaine valeur. En utilisant depuis le début des propriétés de l’ensemble de l’opération serait se limiter ? un changement dans l’accesseur get.
Exemple 2:
Dans l’exécution du programme, la nécessité de compter le nombre de changements dans le « liczba » variable. Pour obtenir cette fonctionnalité serait trouver tous les endroits o? le « liczba » variable est remplacée par la nouvelle valeur et de plus en plus en eux le compteur. L’utilisation de propriétés vous permet de réaliser cela en complétant l’ensemble accesseur pour une ligne additionnelle:
licznik++;
Les aspects techniques de propriétés et accessoires
- – Les propriétés peuvent avoir des modificateurs d’acc?s: public, private, protected, et internal. L’accesseur peut avoir différents modificateurs d’acc?s. Merci ? cette variable d’application est lu peut ?tre public, et donc accessible ? partir de l’extérieur de la classe et enregistrer la valeur du privé ou protégé.
- – Les propriétés peuvent ?tre statiques, déclarée avec le mot-clé static. Merci ? cette fonctionnalité est disponible m?me sans exemple – l’objet.
- – Les propriétés peuvent ?tre virtual, déclarés en utilisant le mot-clé virtuelle. Cela vous permet de modifier le comportement des propriétés dans les classes dérivées par mot-clé override.
- – Propriétés ne peuvent pas ?tre const parce qu’il n’y a pas besoin. En outre, C # ne supporte pas les méthodes const, propriétés et événements.
- – Propriétés sont pas des variables, donc il n’y a aucune possibilité de les passer par mots-clés ref ou out. Il est tout ? fait justifiée, car la propriété comme un ensemble de méthodes qui ne représentent pas un emplacement spécifique dans la mémoire.
- – Propriété autorise la mise en place de breakpoints, ce qui est compréhensible, car le compilateur sont les méthodes habituelles.
- – Les propriétés peuvent ?tre placés dans interfaces – ce sont les méthodes, les champs dans les interfaces sont interdits. Propriétés d’accesseur ne peuvent pas avoir des implémentations de l’interface, de sorte que leur enregistrement se termine par un point-virgule: obtenir; et définir;
- – Propriétés classes abstraites existent seulement dans l’abstrait.
Avantages de propriétés
Pour résumer les avantages de l’utilisation des propriétés peuvent ?tre cités comme principale:
- – Code de Transparence.
- – Admission abrégée – la déclaration.
- – Le code d’encapsulation.
- – Compatibilité avec les interfaces.
- – Application de gestion facile.
- – Vérification des valeurs des variables.
- – Opération sur des méthodes telles que la variable ordinaire, en utilisant les opérateurs +, –, =, + =, – = …
- – Beaucoup d’autres pour assurer le confort, la sécurité et le code raccourcir.