Accès en lecture seule de paramètres et membres [Résolu]

Messages postés
728
Date d'inscription
mardi 22 avril 2003
Dernière intervention
19 janvier 2017
- - Dernière réponse : cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 22 juil. 2008 à 14:42
bonjour,

après des mois sans avoir touche un compilo, la reprise est carrément difficile :(
peut-être ai-je trop écris de C++ que je n'arrive plus à en écrire en C# ?

Question n°1 :
Quand on passe un paramètre dans une fonction, (lorsqu'on passait une const ref& en C++) pour spécifier qu'il s'agit d'une variable en read only uniquement, comment on fait ?

Question n°2:
Si on a un membre de type List<Truc>
Le code :
public List<Truc> TrucList
        {
            get { return m_TrucList; }
        }
Retourne en gros un pointeur sur la liste et il suffit de faire .Clear() pour la vider.
Et si on veut juste la donner en lecteur seule cette liste ?

(J'ai honte d'avoir oublié à ce point).

Merci,

++

vincent
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
3
Merci
Salut,

TrucList.AsReadOnly() te renverra une ReadOnlyCollection<Truc>

Mx
MVP C# 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de MorpionMx
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
Salut,

Pour la première question : cette fonctionnalité n'existe pas en C#, je ne sais même pas si c'est faisable en IL (à vérifier).
La solution est donc de passer par un wrapper "ReadOnly" (ce que décrit Mx dans sa réponse à la question 2 en est un exemple) ou s'orienter vers le travail avec des types immuables (comme l'est String dans le Framework .NET).

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
0
Merci
J'avais zappé la premiere question, une fois de plus

Mx
MVP C# 
Commenter la réponse de MorpionMx
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
^^

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Dernière intervention
19 janvier 2017
0
Merci
c'est bizarre que cela n'existe pas en fait.

souvenez vous en C++ les truc du style :
void MyFunction (const MyClass&) const;

c'était certes verbeux mais au moins c'était bien cloisonné :(.
on savait qu'on ne modifiait rien dans le parametre ni dans la classe appellante.

----------------------------
C++ forever
C# amateur
Commenter la réponse de scoubidou944
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
0
Merci
Bon, on peut toujours passer par un clone (méthode Clone ou ICloneable) mais niveau performance c'est vraiment pas le pied...  Cette fonctionnalité qu'on retrouve en C++ pourrait être soumise à la team C#, quoique j'imagine bien que ça a déjà dû être fait et débattu...

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Dernière intervention
19 janvier 2017
0
Merci
et on la contacte où la team C# ?
(Ne serait-ce que savoir pourquoi cela n'a pas été implémenté car je pense bien ne pas être le seul à regretter cette "légèreté"
Commenter la réponse de scoubidou944
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
0
Merci
Si t'as pas quelques relations, je doute que tu puisses la contacter...
En tout cas je ne connais pas de tel formulaire.

<hr />
-My Blog-
Commenter la réponse de cs_Bidou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.