|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() |
Hello,
j'utilise un certain nombre de classes qui ont des propriétés (Readonly) de portée Public. Je me pose la question de savoir si - les Property d'une classe sont générées dès la création d'une instance ou pas ? - l'utilisation de Function au lieu de ReadOnly Property est une optimisation du code ou pas ? Merci d'avance
__________________
Pas de question technique par MP, je ne réponds pas ![]() Page Perso Tutos DVP Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access, Excel et son solveur |
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Etienne MermillodInscription : février 2007 Messages : 442 ![]() |
Salut,
Les propriétés sont des encapsulations de champs privés avec deux méthodes Get_NomPropriété et Set_NomPropriété. C'est généré lors de la compilation. Bref, cela ne sert à rien de se battre dessus jp. |
|
|
10
|
|
|
#3 |
![]() ![]() |
Peut-être la lecture de cet article te permettra d'en apprendre un peu plus sur l'utilité des propriétés. Bonne lecture
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
|
00
|
|
|
#4 | ||
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 770 ![]() |
Citation:
Citation:
D'une manière générale, choisis une propriété si la récupération de la valeur est peu couteuse et n'a pas d'effet de bord. Si la valeur doit être calculée par un traitement complexe, il vaut mieux utiliser une fonction.
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
||
|
00
|
|
|
#5 |
![]() ![]() |
OK,
et donc dans le cas où le retour est une list de classes, mieux vaut faire appel à une fonction donc ? Merci pour la lecture (mermich )
__________________
Pas de question technique par MP, je ne réponds pas ![]() Page Perso Tutos DVP Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access, Excel et son solveur |
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() François Chef de projet NTIC Inscription : janvier 2007 Messages : 6 544 ![]() |
Citation:
![]() De manière générale, je considère qu'il y un cas où le choix doit faire pencher la balance de manière absolue : une propriété doit être idempotente en lecture; dit autrement, la lecture n fois de ta propriété ne doit pas changer l'état du système. Si c'est le cas, il est aberrant d'un point de vue conceptuel d'utiliser une propriété. (même si techniquement rien ne s'y oppose).
__________________
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça... Une réponse vous a aidé ? utiliser le bouton "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel |
|
|
|
20
|
|
|
#7 | ||
|
Membre chevronné
![]() Etienne MermillodInscription : février 2007 Messages : 442 ![]() |
Pour le coup j'ai l'exemple ou le getter d'une propriété faisait de nombreux accès à la base de données...
Dans ton cas je ferai une méthode à part plutôt qu'une liste car tu semble faire du traitement lors de la construction de la liste. De plus, on a vite fait d'essayer de modifier une liste directement avec des .add, même si la propriété est en readonly: Imaginons: Code :
Et je peux te garantir que lorsque le voisin verra ce code pour la première fois il comprendra pas/rigolera/fera les gros yeux. |
||
|
|
00
|
|
|
#8 | ||
![]() ![]() |
@mermich,
C'est cool ton exemple. Sauf que le hic (un peu hors sujet ) est que ta propriété Plop renverra toujours une liste avec zéro élément quoi. Il faut faire comme ça : Code C# :
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
||
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() François Chef de projet NTIC Inscription : janvier 2007 Messages : 6 544 ![]() |
La logique dans ce cas veut qu'on expose des ReadOnlyCollection (méthode "AsReadOnly"), ou éventuellement des listes en readonly (obtenue par héritage de List<T> et overwrite des méthodes "Add" pour lever une exception).
__________________
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça... Une réponse vous a aidé ? utiliser le bouton "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel |
|
|
10
|
|
|
#10 | |
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 770 ![]() |
Citation:
Mais de toutes façons ReadOnlyCollection<T> fait déjà à peu près ça : elle implémente IList<T> mais les méthodes qui modifient la liste déclenchent une exception.
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
|
|
10
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() François Chef de projet NTIC Inscription : janvier 2007 Messages : 6 544 ![]() |
__________________
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça... Une réponse vous a aidé ? utiliser le bouton "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com