.NET - Quand dois-je utiliser une propriété ou variable + fonction d'accès?
Est-il jamais une situation où je dois faire la suite .NET au lieu d'utiliser une propriété avec des capacités de lecture/écriture?
private S as string
public function GetS() as string
return S
end function
public sub SetS(byval NewS as string)
S = NewS
end function
Ne les propriétés de simplement fournir un moyen plus efficace pour faire la même chose?
Va propriétés d'être plus lent que le précédent fonctions d'accesseur dans une application haute performance?
C'est un dupe. Voir msdn.microsoft.com/en-us/library/ms229054.aspx comme une source primaire, et puis aussi stackoverflow.com/questions/164527/..., stackoverflow.com/questions/601621/properties-vs-methods stackoverflow.com/questions/675612/... etc
Vrai. désolé de ma première recherche n'a pas apporter quoi que ce soit.
Vrai. désolé de ma première recherche n'a pas apporter quoi que ce soit.
OriginalL'auteur Brian Webster | 2009-11-02
Vous devez vous connecter pour publier un commentaire.
Propriétés, en interne, ne sont rien, mais une paire de méthodes. En gros, ils s'évaluer à un get et set méthode d'accesseur.
Vous devriez utiliser les propriétés, à moins que la propriété va provoquer certains inattendu, potentiellement longue course d'effets secondaires, ou il y a une autre bonne raison d'utiliser une méthode.
Pour plus de détails, je vous suggère la lecture de la Propriété Directrices pour l'Utilisation sur MSDN. En particulier, l'utilisation d'une méthode:
Sinon, j'ai utiliser une propriété. Brad Abram blogué quelques autres détails, y compris les bonnes raisons pour lesquelles certaines fonctions de l'API utiliser des méthodes (principalement parce qu'ils pourraient causer de la croix-la communication par ordinateur, ce qui serait tomber dans le "effet secondaire" de la catégorie).
Pourquoi personne n'a jamais besoin d'une Propriété Privée?
Il rend plus facile d'ajouter de la logique qui se produit lorsque les choses sont faites, en plus facilite le contrôle de version (si plus tard, vous décidez que vous avez besoin d'avoir de la logique supplémentaire définir). Propriétés simples obtenir inline par le JIT, donc il ya peu de raisons d'éviter de les utiliser. Aussi, les propriétés privées peuvent travailler avec la liaison de données.
"Le membre retourne un tableau" devrait vraiment être généralisée à "membre retourne un objet mutable de type de référence qui n'est plus la propriété par l'objet auquel ce membre belonds".
Oui. C'est une bonne idée de le faire, si vous pensez que vous pourriez jamais vouloir pour fournir le "wrapper". Par exemple, si plus tard, vous souhaitez implémenter INotifyPropertyChanged, ou certains autres le suivi des modifications, ayant le privé en tant que propriété est utile, car vous pouvez le changer sans changer autre code.
OriginalL'auteur Reed Copsey
Propriétés sont effectivement sucre syntaxique pour les méthodes appelées
get_MyProperty
etset_MyProperty
, donc il n'y a pas de différence de performances.OriginalL'auteur GraemeF
Une autre décision autour de l'opportunité d'utiliser des propriétés ou fonctions est lors de l'instanciation de l'objet parent. VB a merveilleusement pratique de la syntaxe, par exemple
Seulement les propriétés sont disponibles dans la section.
Je maintiens une application qui a beaucoup d'objets persistants dans une base de données, un grand nombre de relations entre les objets. par exemple, un élève a un professeur, et l'enseignant est peristed dans la DB.
J'utilise généralement un WriteOnly de propriété pour définir l'Enseignant, car c'est un peu l'opération, mais il est potentiellement coûteux DB access pour récupérer le Professeur, j'ai utiliser une fonction pour récupérer. En d'autres termes:
Cela me permet d'instancier un Étudiant dans la forme
With {.Teacher = SomeTeacherObject}
mais GetTeacher encourage la mise en cache de l'Enseignant de l'objet dans le code de l'utilisateur et non pas seulement en l'utilisant comme une Propriété qui peut ou peut ne pas entraîner de multiples DB appels d'accès.Si quelqu'un a des commentaires sur cette approche, j'aimerais les entendre.
OriginalL'auteur Greg May
Oui, au moins dans mon expérience, j'essaie d'éviter de propriétés et de l'utilisation de la fonction et des routines en place.
Voici mes raisons:
Moins de Code, alors que ce n'est pas une somme ÉNORME, la définition de propriétés dans VB nécessite au moins 2 lignes de code supplémentaires par get ou set. La Surcharge est le double de la lignes de code pour une seule cession ou opération de retour. Bien que petit, ce qui rend la lecture de code beaucoup plus difficile, VB est déjà une manière obsessionnelle verbeux langue.
vs
Propriétés sont moins flexibles, vous devez retourner ce la même valeur que vous obtenez. En d'Autres termes, vous ne pouvez pas définir la valeur à l'aide d'un
String
et d'obtenir l'aide d'unInteger
ou de surcharge avec unString
, ou unInteger
.Maintenant, pour être juste les Raisons que j'ai d'utiliser des Propriétés est d'obtenir le
=
syntaxe de paramètre, cela ne s'applique pas lorsque vous avez une propriété en lecture seule. Aussi les Propriétés peuvent être définies dans le VS de l'éditeur dans la boîte de dialogue propriétés.OriginalL'auteur Apeiron
Avec la N-Tier dessins, dans mon BO, je stocker des valeurs de propriété avec un unset valeur, puis il lorsque vous accédez pour la première fois.
De cette façon, je n'ai jamais de soucis si je lis propriétés dans le bon ordre, depuis que j'ai fondamentalement paresseux charge.
OriginalL'auteur Ryan