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

Signaler
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
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

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
Salut,

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

Mx
MVP C# 
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
82
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
*/
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
J'avais zappé la premiere question, une fois de plus

Mx
MVP C# 
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
82
^^

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

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
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
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-
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

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é"
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
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-