50 votes

Liste<T> readonly avec un ensemble privé</T>

Comment est-ce que je peux exposer une `` sorte qu’il est en lecture seule, mais peut être définie en mode privé ?

Cela ne fonctionne pas :

Même si vous faites :

Vous pouvez toujours faire ceci :

Je suppose que vous pourriez avoir :

96voto

Philip Rieck Points 21405

Je pense que tu mélange les concepts.

public List<string> myList {get; private set;}

est déjà "en lecture seule". C'est, en dehors de cette classe, rien ne peut définir myList vers une autre instance de l' List<string>

Toutefois, si vous souhaitez un readonly liste dans "je ne veux pas que les gens soient en mesure de modifier la liste de contenu", alors vous avez besoin d'exposer un ReadOnlyCollection<string>. Vous pouvez le faire via:

private List<string> actualList = new List<string>();
public ReadOnlyCollection<string> myList
{
  get{ return actualList.AsReadOnly();}
}

Notez que dans le premier extrait de code, d'autres peuvent manipuler la Liste, mais ne peut pas changer de quelle liste vous avez. Dans le deuxième extrait, d'autres recevront une liste en lecture seule qu'ils ne peuvent pas modifier.

11voto

Darin Dimitrov Points 528142

Si vous souhaitez que readonly collection utilisation `` , pas `` :

11voto

Sergey Berezovskiy Points 102044

Je préfère utiliser IEnumerable

10voto

Sean Points 22088

Retourner un ReadOnlyCollection, qui implémente IList

4voto

Joe Enos Points 17442

Il y a une collection appelée `` -qu’est ce que vous cherchez ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X