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

scoubidou944 728 Messages postés mardi 22 avril 2003Date d'inscription 19 janvier 2017 Dernière intervention - 18 juil. 2008 à 18:02 - Dernière réponse : cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention
- 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
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 18 juil. 2008 à 21:24
3
Merci
Salut,

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

Mx
MVP C# 

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de MorpionMx
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 19 juil. 2008 à 13:15
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
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 19 juil. 2008 à 14:09
0
Merci
J'avais zappé la premiere question, une fois de plus

Mx
MVP C# 
Commenter la réponse de MorpionMx
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 19 juil. 2008 à 14:17
0
Merci
^^

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
scoubidou944 728 Messages postés mardi 22 avril 2003Date d'inscription 19 janvier 2017 Dernière intervention - 19 juil. 2008 à 14:58
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 20 juil. 2008 à 23:35
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
scoubidou944 728 Messages postés mardi 22 avril 2003Date d'inscription 19 janvier 2017 Dernière intervention - 22 juil. 2008 à 14:04
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 22 juil. 2008 à 14: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

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.