Pourquoi nous avons besoin de Propriétés en C#
Pouvez-vous me dire ce qu'est exactement l'utilisation de propriétés en C# je veux dire des explications pratiques
dans notre projet, nous utilisons les propriétés comme
///<summary>
///column order
///</summary>
protected int m_order;
///<summary>
///Get/Set column order
///</summary>
public int Order
{
get { return m_order; }
set { m_order = value; }
}
///<summary>
///constructor
///</summary>
///<param name="name">column name</param>
///<param name="width">column width</param>
///<param name="order">column order</param>
public ViewColumn(string name, int width, int order)
{
//
//TODO: Add constructor logic here
//
m_name = name;
m_width = width;
m_order = order;
}
///<summary>
///returns the column name, width, and order in list view.
///</summary>
///<returns>string represent of the ViewColumn object</returns>
public override string ToString()
{
return (string.Format("column name = {0}, width = {1}, order = {2}.",
m_name, m_width, m_order));
}
///<summary>
///Do a comparison of 2 ViewColumn object to see if they're identical.
///</summary>
///<param name="vc">ViewColumn object for comparison</param>
///<returns>True if the objects are identical, False otherwise.</returns>
public override bool Equals(object obj)
{
ViewColumn vc = (ViewColumn)obj;
if(m_name == vc.Name &&
m_width == vc.Width &&
m_order == vc.Order)
return true;
else
return false;
}
Ils sont utiles pour la liaison de données.
double possible de dois-je utiliser les propriétés publiques et privées ou publiques, des champs pour les données?
double possible de dois-je utiliser les propriétés publiques et privées ou publiques, des champs pour les données?
OriginalL'auteur peter | 2009-10-06
Vous devez vous connecter pour publier un commentaire.
Pensez-y : Vous avez une pièce pour laquelle vous souhaitez réguler qui peut venir pour maintenir la cohérence interne et de la sécurité de la salle comme vous ne voudriez pas que quelqu'un vienne dans et le désordre et le laisser comme rien ne s'est passé. De sorte que la chambre serait votre instancié de la classe et les propriétés seraient les portes, les gens viennent d'entrer dans la salle. Vous effectuez des contrôles appropriés dans les setters et getters de vos propriétés assurez-vous que les choses inattendues arrivent et partent.
Plus technique, la réponse devrait être encapsulation et vous pouvez vérifier cette réponse pour obtenir plus d'informations sur: https://stackoverflow.com/a/1523556/44852
Personnes est en sectionOne assez facilement, il n'y avait pas de vérification.
maintenant vous vérifié l'état de la personne et savoir si il a quelque chose de mal avec lui.
Maintenant, la question est.... comment vérifier si il a quelque chose de mal avec lui ^_^
OriginalL'auteur Tarik
Réponse courte: Encapsulation
Réponse longue: les Propriétés sont piolet très polyvalent. Il vous permet de choisir comment vous souhaitez exposer vos données à l'extérieur des objets. Vous pouvez injecter une certaine quantité de validation des données lors de la configuration de valeurs. Il a également aliviates les maux de tête de
getX()
etsetX()
méthodes vues dans les goûts de Java, etc.voir, par exemple, stackoverflow.com/questions/1461598/...
+1 pour la réponse -1 pour la question: Pourquoi cette réponse n'est pas acceptée?
quoi? ...des maux de tête de getX et setX... - omg, vous venez de manquer la GRANDE facilité de grouper tous disponibles setters ensemble... LE GRAND inconvénient de propriétés.
OriginalL'auteur Justin Niessner
Des tas de raisons:
Bitch slap moi-même je ne savais pas que la Compatibilité Binaire chose. Nice.
que les jours qui se terminent en "y", mais parfois, pas pour très longtemps.
Je connais ce sentiment. Que le temps semble croître de moins en moins de jour en jour.
+1 pour la Compatibilité Binaire
OriginalL'auteur Joel Coehoorn
Voici un modèle commun:
En bref, cela nous permet d'accéder à la Barre de l'objet sur notre instance de Foo. Cette encapsulation signifie que nous n'avez pas à vous soucier de la façon dont la Barre est récupéré, ou si foo.la barre a déjà été instancié. Il suffit d'utiliser l'objet et le laisser à l'intérieur de la classe Foo prendre soin d'elle.
OriginalL'auteur Doug R
C'est la façon de l'utiliser, sauf pour la façon dont vous êtes le fixer, peut-être. Au lieu d'accéder à la variable membre, vous pouvez utiliser la propriété à partir de l'intérieur de la classe, de sorte que vous pouvez utiliser des règles uniformes relatives à chaque variable membre. C'est le principal avantage de l'utilisation de propriétés, est d'apporter de l'accès et de définition de la logique de tous dans un seul endroit. Cela dépend vraiment de vos besoins spécifiques, si oui ou non vous souhaitez définir à l'aide de la Propriété ou non. Noter cependant que dans le constructeur, vous voulez être très prudent lors de l'appel de la Propriété, comme vous pouvez ou ne pouvez pas compter sur d'autres parties de la classe en cours d'initialisation qui ne serait pas fait et pourtant si accessible par le constructeur. Encore une fois, cela dépend de votre mise en œuvre.
C'est aussi un peu de nettoyant à utiliser:
Que ce que vous pouvez voir dans d'autres langues:
Voici un cas où vous pouvez encapsuler un peu de logique:
Une autre façon dont ils sont utiles comme ceci:
Et maintenant vous avez une auto-mise en œuvre de la propriété, avec l'appui variable de membre ne peut être définie qu'à l'intérieur de la classe, mais le lire partout ailleurs.
Enfin, si vous avez besoin de contrôle de la logique, vous pouvez écrire ceci:
Là vous allez, j'ai ajouté plusieurs.
OriginalL'auteur jasonh
Que Justin a noté, l'Encapsulation est l'un des principes de base de la programmation orientée objet. Vous voulez garder la représentation interne des données dans votre classe caché de l'extérieur et de fournir les méthodes approuvées de visualisation/de la manipuler.
C# propriétés sont des constructions qui constituent un moyen facile de le faire. Dans votre exemple, vous ne faites pas quelque chose à l'intérieur de la
get
etset
méthodes, mais dans la vraie vie, vous pouvez avoir besoin de faire certaines choses commeEn Java, vous écrivez des getters et setters qui sont de plain-vieilles méthodes qui retournent ou accepter une valeur respectivement.
Au IL des propriétés de niveau sont des méthodes. En fait, le compilateur C# de créer des méthodes comme get_Order et set_Order pour le bien et ne vous permettra pas de définir votre propre méthode avec le même nom.
OriginalL'auteur Chetan Sastry
Propriétés sont utilisées pour restreindre l'accès direct aux variables membres d'une classe.
L'Abstraction est maintenue à l'aide de propriétés.
Chaque fois que vous souhaitez instancier un objet et de l'ensemble des données du membre de variables à l'aide de la propriété vous pouvez vérifier certaines conditions si la valeur est définie sur la variable de membre ou pas.
Vous pouvez restreindre en lecture et en écriture à une propriété, de sorte que la valeur de la variable de membre peuvent être en lecture seule, writeonly lors de l'accès à l'objet de cette classe.
OriginalL'auteur Himadri
Moment De La Conception Des Prestations
Propriétés permet de visual conception facile, vous avez le Plus Célèbre de l'explorateur de propriétés de Visual Studio pour vous permettre de modifier les propriétés de l'objet.
Propriétés également fournir des métadonnées supplémentaires de validation, l'aspect visuel à l'intérieur de la Propriété Navigateur, comme déroulant, la plage, le sélecteur de couleur etc.
Séparer les Données et les Actions de
Ils permettent de représenter la différence entre les "Données" de l'objet et "Actions" (Méthodes) de l'objet.
Quand on regarde la classe, si nous avons 50 méthodes à regarder, tout le monde ne va toujours utiliser le nommage des fonctions, qui rendra les choses difficiles à comprendre plus tard. Je dis toujours aux programmeurs qu'à chaque fois que vous programme, écrivez le code de telle façon qu'après 5 ans, si quelqu'un d'autre regarde le code, il doit comprendre le code.
L'aide de la méthode des noms de l'accès aux données et certaines actions créer une confusion dans le long terme... comme dans le cas de la Pile, Push/Pop sont les actions, mais "de Taille" ou "Comte" est données.
La création de la propriété du "Comte" simplement distingue sa vocation de données au lieu de l'action.
Databinding
Comme mentionné par d'autres, les propriétés offrent niveau élevé de la liaison de données comme une liaison bidirectionnelle etc.
Restrictions D'Accès
Vous pouvez avoir readonly propriétés supplémentaires et des accesseurs, comme mentionné par d'autres.
Réflexion
Son peu facile de travailler avec des propriétés dans le cas de l'écriture de code générique basée sur la réflexion.
De Stockage Différent De La Mise En Œuvre
Variables publiques stocker des données seulement à titre de membres, où les propriétés proposent différentes façons de stocker des données sous différentes formes comme en interne, ils peuvent être stockées dans la table de hachage (car ils sont en fait dans la dépendance des objets dans WPF). Ils peuvent être mis en cache. Ils cab être relayé suite à certaines autres entités ou foriegn entités. Cependant, l'application est caché pour les appelants.
Validation
Paramètre de propriété peut exiger que certaines de validation, et un code de validation dans "Set" une partie du code peut facilement vous aider à valider l'entrée et les erreurs d'un rapport en conséquence.
Notifications
Définir le cadre de la méthode peut augmenter la notification des événements tels que INotifyPropertyChanged.PropertyChanged laquelle d'autres objets peuvent écouter et mise à jour de la valeur d'affichage. C'est important, la partie de liaison de données avancées.
En bref, c'est un nouveau "Standard" de stockage de données qui a avancé des installations simples de stocker les données dans les membres de la classe. En évitant les propriétés en général, vous pouvez effectuer toutes les fonctions, mais depuis la mise en œuvre peuvent varier d'une personne à l'autre, c'est un standard qui permet à chacun de définir/accès/valider/avertir le stockage de données dans un seul formulaire appelé "Propriétés"
OriginalL'auteur Akash Kava