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

Messages postés
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
- - Dernière réponse : cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
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 

8 réponses

Meilleure réponse
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
41
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 219 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MorpionMx
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
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
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
41
0
Merci
J'avais zappé la premiere question, une fois de plus

Mx
MVP C# 
Commenter la réponse de MorpionMx
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
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
Statut
Membre
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
Statut
Modérateur
Dernière intervention
20 juin 2013
42
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
Statut
Membre
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
Statut
Modérateur
Dernière intervention
20 juin 2013
42
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