Sólo lectura lista de cadenas
-
23-08-2019 - |
Pregunta
¿Es bueno el uso de esos métodos para mantener sólo lectura lista de cadena, por ejemplo, una lista de campos en ADO.NET.
var list = new System.Collections.ObjectModel.ReadOnlyCollection<string>(
new List<string>(4) { "type", "currency", "date", "amount" });
O esta es una solución superflua?
Solución
Depende de su posición. ReadOnlyCollection
funciona muy bien cuando se tiene una lista modificable interna que hay que dar a algún otro código que no está permitido cambiar la lista. Para el código simple, utilizando ReadOnlyCollection
es algo excesivo. Si el código es grande y hay un riesgo de algún otro programador (o que, por el camino) podría intentar accidentalmente modificar la lista, a continuación, podría valer la pena.
En pocas palabras:. No utilice ReadOnlyCollection
idiomáticamente, usarlo cuando tiene sentido
Otros consejos
Si es posible, prefieren la comprobación de tipo estático. IEnumerable<string>
es de sólo lectura.
IEnumerable<string> list = new List<string> { "type", "currency", "date", "amount" };
Con posterioridad código no puede modificar la lista, y los errores será atrapado en tiempo de compilación -. A menos que utilice la reflexión, pero luego la reflexión podría ser utilizado para eludir los controles de tiempo de ejecución, así
Volviendo a .NET 2.0, la clase List tenía un método AsReadOnly()
. Cuando vinieron los genéricos, el List<T>
consiguió también. Aquí está la MSDN página de referencia .