est-il bon d'utiliser une telle approche pour maintenir la liste de chaînes en lecture seule, par exemple une liste de champs dans ado.net.
var list = new System.Collections.ObjectModel.ReadOnlyCollection<string>( new List<string>(4) { "type", "currency", "date", "amount" });
3 Réponses :
dépend de votre position. En bref: n'utilisez pas ReadonlyCollection Code> fonctionne très bien lorsque vous avez une liste modifiable interne qui doit être donnée à un autre code qui n'est pas autorisé à modifier la liste. Pour un code simple, en utilisant
loadonlycollection code> est probablement surkill. Si le code est grand et qu'il y a un risque, certains autres programmeurs (ou vous, sur la route) pourraient tenter accidentellement de modifier la liste, alors cela pourrait en valoir la peine. P>
lisonlycollection code> idiomatiquement, utilisez-le quand il est logique. P>
Si possible, préférez la vérification du type statique. ienumerable
IEnumerable<string> list = new List<string> { "type", "currency", "date", "amount" };
Non, n'utilisez pas cela comme le code suivant peut simplement renvoyer à list
@KevinBrock Même si la réflexion était requise, ce serait zéro-effort pour se déplacer, voir: Stackoverflow.com/a/1232332/27423 < / a> - essayer de "bloquer" le débordement de votre wrapper "réadonn" est pire que inutile. Cela ajoute de la complexité (et peut-être coûte d'exécution) sans ajouter de valeur réelle. Documez la bonne utilisation de votre API via le système de type statique - tout ce qui est inutile.
retour à .NET 2.0, la classe de liste avait un asreadonly () code> méthode. Lorsque les génériques sont venus, la liste