Accès en lecture seule de paramètres et membres

Résolu
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 - 18 juil. 2008 à 18:02
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre 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

8 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 juil. 2008 à 21:24
Salut,

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

Mx
MVP C# 
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 juil. 2008 à 13:15
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
*/
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
19 juil. 2008 à 14:09
J'avais zappé la premiere question, une fois de plus

Mx
MVP C# 
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 juil. 2008 à 14:17
^^

/*
coq
MVP Visual C#
CoqBlog
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
19 juil. 2008 à 14:58
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
20 juil. 2008 à 23:35
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-
0
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
22 juil. 2008 à 14:04
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é"
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
22 juil. 2008 à 14:42
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-
0
Rejoignez-nous