Ce qui est en lecture seule collection?
J'ai couru un code de sécurité analyste, je me suis retrouvée avec un CA2105 avertissement. J'ai regardé au niveau de la falsification exemple. Je ne savais pas que vous pouvez affecter int[] pour un readonly int. J'ai pensé readonly était comme le C++ const et la rend illégale.
La Façon de Résoudre les Violations suggèrent je clone de l'objet (ce que je ne veux pas faire) ou "Remplacer le tableau avec un typage fort de la collection qui ne peut pas être changé". J'ai cliqué sur le lien et voir "ArrayList" et en ajoutant à chaque élément un par un et qu'il ne regarde pas comme vous pouvez empêcher l'ajout de quelque chose de plus.
Alors, quand j'ai ce bout de code ce qui est le plus facile ou le meilleur moyen d'en faire une lecture seule collection?
public static readonly string[] example = { "a", "b", "sfsdg", "sdgfhf", "erfdgf", "last one"};
Un readOnlyCollection = Normal de la collection - Ajouter/supprimer Api - Ensemble de l'Indexeur
OriginalL'auteur | 2010-04-21
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple d'avoir une collection qui vous ne pouvez pas modifier est d'utiliser
ReadOnlyCollection
Exemple à partir de MSDN:
OriginalL'auteur Mikael Svenson
(bien qu'il devrait probablement être exposé comme un
get
de la propriété, plutôt que d'un domaine public)readonly
mot-clé pour la variable. Sans cela, n'importe qui peut tomber sur une impression que, depuis la collecte est de typeReadOnlyCollection
donc, je suis complètement à l'abri de toute possibilité de changements ont été fait à ma collection quand il n'est pas le cas. On pourrait ne pas réaliser que la collection est en lecture seule, mais la variable pointant vers celui-ci ne l'est pas. QuelReadOnlyCollection
signifierait, si je peut réaffecter la variable elle-même à une nouvelle collection tout à fait. +1.notez que readonly est un mensonge; readonly champs peuvent absolument être muté. Vous avez de tricher un peu, bien sûr...
Il m'a fallu un certain temps pour digérer this. Merci de m'avoir montré la lumière.
OriginalL'auteur Marc Gravell
Si vous travaillez avec des tableaux, vous pouvez utiliser
pour envelopper votre tableau dans une collection en lecture seule.
OriginalL'auteur Steve Dennis
OriginalL'auteur Mark Seemann
OriginalL'auteur Kyle Rozendo
Je cherchais une solution similaire, mais je voulais toujours être en mesure de modifier la collection de l'intérieur de la classe, donc j'ai choisi l'option décrite ici:
http://www.csharp-examples.net/readonly-collection/
En bref, son exemple est:
OriginalL'auteur nelsonmichael