Propriété dans la classe de C# |
 |
 |
Propriété dans la classe de C#
|
Comment accédons-nous à des variables de membre d'une classe de l'extérieur de la classe ? Dans la plupart des langues comprenant C++, nous ferons le public de variables de membre de sorte que nous puissions créer un exemple de la classe et directement accéder aux champs publics, comme montré ci-dessous :
|
using System;
class Hello
{
static void Main () {
Console.WriteLine("hello, world");
}
}
|
|
La classe ci-dessus a un champ public : couleur. Nous pouvons accéder à ce champ de l'extérieur de la classe comme montré ci-dessous :
|
Car car = new Car ();
car. Color = "red";
string color = car.color;
|
|
Mais c'est la vieille manière ! Ceci travail immobile avec C#, mais l'approche suggérée est d'employer la « propriété » au lieu des variables directement de accès de membre. L'extrait suivant de code montre comment créer la « propriété » dans une classe.
|
public class Car
{
// private fields.
private string color;
// constructor
public Car()
{
}
public string Color
{
get
{
return color; // return the value from privte field.
}
set
{
color = value; // save value into private field.
}
}
}
|
|
La classe ci-dessus a un champ privé - couleur. Alors nous avons un « la « couleur » appelée de propriété », qui est employée pour représenter le champ privé. Noter que le champ est privé et la propriété est publique. (Nous avons employé le même nom avec supérieur/lettre minuscule pour représenter la « propriété » et le « champ », mais nous pouvons donner n'importe quel nom que nous voulons.)
|
Chaque propriété a deux parts :
obtenir
placer
|
La pièce d'obtenir est exécutée quand nous accédons à la valeur de la propriété comme montré ci-dessous :
|
Car car = new Car();
string color = car.Color;
|
|
Une fois exécutés, ce qui précède obtiennent l'accédant renverront la valeur stockée dans le domaine « couleur ». La pièce d'ensemble est exécutée quand nous assignons une valeur à la propriété comme montré ci-dessous :
|
Car car = new Car();
car.Color = "RED";
|
|
Quand exécuté, l'accédant ci-dessus d'ensemble assignera la valeur « ROUGE » au champ privé « couleur ». (Note que la « valeur » est un mot-clé, qui aura la valeur assignée à lui.)
|
Ainsi, quelle est la différence ?
|
Sur le premier regard, il n'y a aucune différence ! Nous pouvons réaliser le même comportement en écrivant 2 méthodes différentes (comme SetColor (...), GetColor ()).
|
Le premier avantage d'employer la propriété est, décapant de regards de code qu'ayant 2 méthodes séparées. Nous pouvons simplement appeler une propriété comme si c'était un champ dans la classe.
|
Bien, alors nous pouvons demander pourquoi lui faire 2 méthodes, nous pouvons lui faire un champ public, de sorte que nous puissions lui accéder en créant un exemple de la classe.
|
L'avantage principal fini en utilisant une propriété au lieu d'un champ public est, avec la propriété, nous obtiendra une chance d'écrire peu de lignes de code (si nous voulons) dans les accédants d'obtenir et d'ensemble. Ainsi, nous pouvons exécuter une certaine validation ou n'importe quelle autre logique avant de renvoyer toutes les valeurs ou les assigner au champ privé. Voir la classe modifiée ci-dessous :
|
public class Car
{
// private fields.
private string color;
// constructor
public Car()
{
}
public string Color
{
get
{
if ( color == "" )
return "GREEN";
else
return color;
}
set
{
if ( value == "" )
thrown new Exception ("Wrong value.");
else
color = value;
}
}
}
|
|
Analysons la pièce d'obtenir d'abord. Ici nous vérifions s'il y a une valeur valide dans le domaine « couleur » avant que nous renvoyions la valeur. Si elle est vide, nous obtenons une chance de renvoyer une valeur par défaut « vert ». De cette façon, nous pouvons nous assurer que celui qui appelle la propriété « couleur » obtiendra toujours une couleur valide, jamais une corde vide.
|
Dans la pièce d'ensemble, nous faisons une validation pour nous assurer que nous assignons toujours une valeur valide à notre champ. Si quelqu'un assignent une corde vide à la propriété de « couleur », il obtiendra une exception (erreur).
|
Car car = new Car();
car.Color = "";
|
|
Le code ci-dessus jettera une erreur parce que nous essayons d'assigner une corde vide et l'accédant d'ensemble jettera une erreur s'il une corde vide. De cette façon, nous pouvons nous assurer que nous permettons seulement à des valeurs valides d'être assignées.
|
Ainsi, je devine que maintenant vous apprécieriez le but de la « propriété ». Ainsi, plus de champs publics ! Toujours avoir les champs privés et écrire les propriétés publiques comme emballage pour eux s'il y a lieu pour les exposer à en dehors de la classe.
|
 |
 |
Keywords Property in C# class, c# xml, c# c++, c# net, c# textbox, c# dotnet, vb c#, c# example,
convert c#, c# control, asp c#, private property, c# form, csharp c#, custom c#,
c# application, c# sample, add c#, use c#, properties property, c# data, c# create,
|