2010-09-30 9 views
15

La lectura sobre el problema de crear un vector primitivo de solo lectura en C# (básicamente, no se puede hacer eso),¿Por qué no hay una clase ReadOnlyList <T> en la biblioteca System.Collections de C#?

public readonly int[] Vector = new int[]{ 1, 2, 3, 4, 5 }; // You can still changes values 

aprendí sobre ReadOnlyListBase. Esta es una clase base para contenedores de objetos que permiten acceder a sus posiciones pero no modificarlas. Incluso hay un ejemplo en el Microsoft msdn.

http://msdn.microsoft.com/en-us/library/system.collections.readonlycollectionbase.aspx

he modificado ligeramente el ejemplo de MSDN utilizar cualquier tipo:

public class ReadOnlyList<T> : ReadOnlyCollectionBase { 
    public ReadOnlyList(IList sourceList) { 
     InnerList.AddRange(sourceList); 
    } 

    public T this[int index] { 
     get { 
     return((T) InnerList[ index ]); 
     } 
    } 

    public int IndexOf(T value) { 
     return(InnerList.IndexOf(value)); 
    } 



    public bool Contains(T value) { 
     return(InnerList.Contains(value)); 
    } 

} 

... y funciona. Mi pregunta es, ¿por qué no existe esta clase en la biblioteca estándar de C#, probablemente en System.Collections.Generic? ¿Lo estoy perdiendo? ¿Dónde está? Gracias.

+1

Actualización 2015: .NET 4.5 ahora tiene ImmutableList https://msdn.microsoft.com/en-us/library/dn467185(v=vs.111).aspx –

Respuesta

Cuestiones relacionadas