Definir una lista real de solo lectura en C#

La palabra clave readonly en C# indica que los campos de la clase solo pueden inicializarse en el momento de la definición o en el constructor. Los tipos comunes de datos pueden lograr el efecto esperado, pero en el objeto o la lista, si desea lograr el efecto de solo lectura, no puede usar solo una palabra clave de solo lectura. Cuando modifica una Lista con solo lectura, aún puede usar los métodos Agregar y Eliminar en otras clases para cambiarla. Pero tal vez el atributo de solo lectura que desea es: solo modifique el elemento de esta lista en la clase actual, ¡y no desea que otras clases lo modifiquen!

El siguiente ejemplo es una lista decorada con la palabra clave readonly, y sus elementos de contenido aún se pueden agregar o eliminar en otras clases:


Incluso si está encapsulado como una propiedad de solo lectura, todavía se puede manipular en otras clases:


Pero puede cambiar el tipo de propiedad a IEnumerable<T>, para que pueda lograr el efecto deseado. Debido a que la clase IEnumerable<T> no tiene métodos Add y Remove, la clase List<T> hereda la clase IEnumerable<T> y los métodos Add y Remove se agregaron recientemente en la clase List<T>:


Si desea crear una propiedad completamente de solo lectura cuyos elementos no se puedan modificar ni siquiera en la clase actual, puede usar ReadOnlyCollection<T> :


En .NET 4.5, List<T> hereda IReadOnlyList<T> e IReadOnlyCollection<T>, lo que nos brinda una forma más sencilla de escribir, que también puede lograr el efecto anterior:


Fuente: http://sirkevin.cnblogs.com 

Supongo que te gusta

Origin blog.csdn.net/weixin_43705303/article/details/104768823
Recomendado
Clasificación