2010-09-30 9 views
15

Leggendo il problema di creare un vettore lettura sola primitiva in C# (in pratica, non è possibile farlo),Perché non c'è una classe ReadOnlyList <T> nella libreria System.Collections di C#?

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

ho imparato a conoscere ReadOnlyListBase. Questa è una classe base per contenitori di oggetti che permettono di accedere alle loro posizioni ma non di modificarle. Anche c'è un esempio nel Microsoft msdn.

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

ho un po 'modificato l'esempio nella msdn utilizzare qualsiasi 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)); 
    } 

} 

... e funziona. La mia domanda è, perché questa classe non esiste nella libreria standard di C#, probabilmente in System.Collections.Generic? Mi manca? Dov'è? Grazie.

+1

Aggiornamento 2015: .NET 4.5 ha ora ImmutableList https://msdn.microsoft.com/en-us/library/dn467185(v=vs.111).aspx –

risposta

Problemi correlati