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?

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top