Pourquoi devrais-je utiliser une variable privée dans une propriété accesseur?
Désolé Si je suis noob, j'ai ce doute, pourquoi utiliser des variables privées et de les fixer à l'aide de propriétés ?
Pourquoi ne peut-on pas utiliser properites seul ?
Je parle de ce genre de situations
private string _testVariable;
public string MyProperty
{
get { return _testVariable;}
set {_testVariable = value;}
}
Je pense simplement à l'aide de
public string MyProperty { get; set; }
Pourquoi redondant variable privée? ce sont ces deux stratégies différentes ? quelqu'un peut s'il vous plaît jeter un peu de lumière sur ce.
Grâce
- désolé, j'étais juste la copie de mon premier extrait .. oublié de supprimer, dans la deuxième .. merci 🙂
- c'est ok pour poser des questions de noob.
- merci, je suis nouvelle dans le développement de logiciel, mais je veux apprendre 🙂
Vous devez vous connecter pour publier un commentaire.
Vos exemples sont sémantiquement identiques. La concision de la propriété syntaxe de déclaration (juste après avoir
{ get; set; }
) est un raccourci disponible en C# 3.0. Le compilateur crée en fait un privé à la sauvegarde de variable et d'un simple getter et setter comme dans votre premier exemple.Si tout ce que vous faites est de créer un getter et setter (et rien de ce qui se passe réellement lorsque se produit), puis la syntaxe concise est une bonne option. Si vous devez effectuer d'autres actions (redessiner un contrôle, par exemple) lorsque vous définissez la valeur, alors la syntaxe complète est nécessaire.
Si tous que vous faites est de la lecture/écriture d'une variable, alors non. Sinon, il y a deux raisons pourquoi vous voulez une variable privée:
De validation des données
Getter/setter, enveloppements d'une sous-banque de données
Le deuxième exemple que vous donnez:
Est disponible uniquement dans les versions ultérieures de la .Net framework (v3.0, je crois)
Le premier exemple permet de définir des points d'arrêt sur le
return
et les instructions d'affectation, à l'origine de votre débogueur pour rompre lorsque le bien est affecté /lire.La 1ère capture du code allws vous de modifier certains cours privé de l'état. Emballage privée dans une propriété est intéressante parce qu'elle masque la mise en œuvre. Plus tard, vous pouvez changer la mise en œuvre et la propriété (interface externe) peut demeurer inchangé.
Par exemple, supposons qu'au lieu de définir une chaîne unique à l'intérieur de l'incubateur, vous définissez la chaîne dans une banque privée de la sorte. Vous l'écrire dans un fichier, ou écrire à mémoire partagée. Ou peut-être vous calculer le hachage de la chaîne uniquement, et ne le conservez pas du tout, comme on pourrait le faire avec un mot de passe.
L'auto propriétés dans votre 2ème capture du code ne sont pas liées à la variable privée à tous. L'auto-propriété de la conception, comme la propriété explicite design utilisé dans la première capture, permet aux futurs modification. Dans le cadre de cette modification, par exemple, vous pouvez convertir de l'auto propriétés explicitement les propriétés implémentées.
Mashesh,
Nous devons tous commencer quelque part! Vous m'avez demandé privé vars vs propriétés de cette ex:
Avez-vous pensé à:
Vous pouvez appliquer portée à la propriété des getters/setters . . . . des trucs cool. Oh ouais . . . lors de l'utilisation de ce type de biens dans la définition de la classe (comme dans un constructeur) préfixer par un " cela.' - si une cession ressemblerait à cela.MyProperty = "Attribué Une Chaîne";'. Cela rend vos intentions beaucoup plus clair . . .
De la propriété est essentiellement le wrapper autour d'un champ. Ce wrapper permet d'utiliser la variable de monde extérieur. En C#3.0, vous pouvez simplement déclarer une propriété comme
public string MyProperty { get; set; }
Le compilateur déclare une variable privée automatiquement et obtenir des méthodes définies pour cela aussi. Si vous devez effectuer un calcul à l'intérieur de la classe qui est de déclarer la propriété, alors vous devriez utiliser le champ privé pour que.Parfois vous ne savez pas quand vous écrivez d'abord le code si vous avez peut-être ajouter un peu plus de code, plus tard, qui nécessite l'utilisation de la variable privée. Bien sûr, vous pouvez l'ajouter plus tard si nécessaire. Je viens de créer automatiquement la variable privée, en supposant qu'il sera utilisé plus tard.
Cela peut être plus pertinent dans les grandes applications de l'entreprise et à l'évolution rapide des applications (agile) où la mise en œuvre complète ne peut pas être connu lors de la première de codage.
Je DÉTESTE la sauvegarde de variables quand ils ne sont pas nécessaires, c'est à cause de la complexité alors nécessaire.
Évidemment, si vous avez besoin de faire quelque chose de spécial dans le getter ou un setter alors le plein sémantique formulaire doit être utilisé et non pas le sucre.
J'aime aussi utiliser les propriétés comme une méthode de débogage de la façon dont la propriété est défini ou s'il est utilisé parfois, ce n'est pas aussi évidente à cause de la réflexion et c'est une des raisons pour laquelle j'aime à les utiliser.
Je trouve ça frustrant d'essayer de déboguer le code lorsqu'il y a une possibilité que la sauvegarde de la variable peut être accessible soit en interne dans la classe par la propriété de soi, ou à la sauvegarde de la variable, et rien n'indique que le codeur le droit chemin pour accéder aux.
Vous pouvez accéder à la sauvegarde de la variable à l'interne ainsi que la propriété qui est le droit chemin? Il n'est pas évident...
Ce n'est pas lié à C# de la langue, mais plus de l'application.
L'une des raisons d'utiliser les propriétés, c'est que ses traités comme des "Spéciales" dans de nombreux cadres.
Par exemple, Silverlight et WPF vont se lier à des propriétés et à ne pas les champs