Comment définir correctement les propriétés de classe?
Lors de la définition d'une nouvelle classe à l'intérieur d'un projet, qu'est-ce que la bonne/meilleure pratique pour le faire?
Dans le passé, j'ai créé des classes telles que:
public class MyClass
{
public string FirstName {get; set;}
public string LastName {get; set;}
}
Normalement, je voudrais utiliser une classe comme cela pour la création de collections au sein d'un projet.
Cependant que je continue à apprendre à lire et à plus sur le c# sharp-je voir des exemples où les classes sont définies comme suit:
class MyClass //not set to public
{
private string _firstName; //first defined as fields
private string _lastName;
public string FirstName //then defined as properties
{
get { return _firstName; }
set { _firstName = value; }
}
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
}
Est la première approche incorrecte dans la définition ou est-ce un acceptées version courte en C#? Comme une meilleure pratique, faut-il toujours d'abord définir la classe avec des champs privés et ensuite de les définir comme des propriétés à l'aide de get /set pour une valeur?
Je demande parce que je suis autodidacte en C# et je suis en train d'améliorer et de mieux comprendre la démarche à adopter pour le développement et certains des didacticiels et des exemples là-bas tout simplement de l'état approches sans une solide explication quant à pourquoi une approche est privilégiée (ou devrait être fait) sur l'autre.
Merci d'avance
source d'informationauteur rlcrews
Vous devez vous connecter pour publier un commentaire.
Votre premier exemple de:
est spécifiquement Les Propriétés Implémentées Automatiquementintroduit en c# 3.0. Ni le format est incorrect. Le premier est plus d'une "abréviation'.
Avec des types plus complexes, il est parfois encore utile d'utiliser l'ancien style, et de les exposer uniquement certaines propriétés ou des valeurs d'une variable privée, tels que:
Un exemple brut mais j'espère que vous avez mon idée.
L'abréviation de la syntaxe (auto propriétés implémentées) dans votre premier exemple a été introduit en C# 3.0, et n'était pas valide avant. Le compilateur convertit à la forme complète avec des champs de sauvegarde.
Avant de C# 3.0, la seule façon correcte de définir des propriétés a été avec des champs de sauvegarde.
Même avec C# 3.0, si vous voulez avoir toute logique dans vos propriétés, vous avez besoin de les convertir à utiliser les champs de sauvegarde.
En bref, muet propriétés (ceux qui ne font rien), l'utilisation de l'auto de propriétés. Ils font de votre code plus simple et plus facile à lire et peut être converti.
Les deux classes que vous avez sont, dans la pratique, identique en termes de fonctionnalités et de fonctionnalités.
Le but de la correction automatique de propriétés de syntaxe (le premier de la classe) est essentiellement de vous donner un moyen rapide de déclarer ce qui est essentiellement la même que la deuxième classe du show.
Je m'en tiendrais à la première version jusqu'à ce que vous avez besoin d'ajouter du code pour le getter et le setter de la méthode (comme la validation d'une nouvelle valeur pour la propriété.)
La fin automatique de la syntaxe de la propriété est double, il a été en partie ajoutée pour faciliter Linq, et en partie ajoutée pour le rendre plus facile de vous assurer de déclarer des biens, et pas des champs publics.
Si vous déclarez une classe à l'aide automatique propriétés (encore une fois, la première version), puis toutes les autres assemblées compilé avec votre code saurez que votre classe déclare ces choses comme des propriétés, et non pas comme des champs. Si vous décidez plus tard que vous avez besoin d'ajouter du code, comme la validation, ces assemblées n'ont pas à être recompilé, puisqu'ils encore trouver les propriétés.
Vous pourriez aussi utiliser un Modificateur d'Accès pour obtenir et définir...
Et je suppose que vous avez déjà des connaissances de
Access Modifier
.