2012-04-23 11 views
7

¿Hay alguna forma de que pueda agregar un valor en un índice específico? Intento hacer indexador y tengo listas. ¿Hay algún truco para hacer esta presente en este contexto: Dforma C# para agregar valor en una lista <T> en el índice

public class Multime<T> 
{ 
    private List<Multime<T>> multiSets; 
    private List<T> multimea; 


    ***public Multime<T> this[int index] 
    { 
     get { return this.Multisets.ElementAt(index); } 
     set { this.Multisets.CopyTo(value,index); } 
    }*** 



    public List<Multime<T>> Multisets 
    { 
     get { return this.multiSets; } 
     set { this.multiSets = value; } 
    }//accesori Multimea de multimi 

    public List<T> Multimea 
    { 
     get { return this.multimea; } 
     set { this.multimea = value; } 
    }//Accesori Multime 
+1

¿Intentó buscar los métodos ya provistos por List? Existe una clara posibilidad de que uno haga exactamente lo que necesita. – Servy

+0

INSERT no es bueno: D, no quiero que el resto de la lista se modifique y quiero agregar/reemplazar en el índice – TyGerX

Respuesta

16

List<T>.Insert, tal vez?

Pero me gustaría sugerir es probable que sólo se desea obtener/escritura - No introduzca:

public Multime<T> this[int index] 
{ 
    get { return Multisets[index]; } 
    set { Multisets[index] = value; } 
} 

Nota que a partir de C# 3, hay formas más sencillas de escribir esas propiedades, por cierto:

public List<T> Multimea { get; set; } 
public List<Multime<T>> Multisets { get; set; } 

En general, tampoco es una buena idea exponer directamente colecciones compuestas, lo que significa que no tiene control sobre lo que sucede en esas colecciones.

+0

creo que mueve el elemento [índice] al índice + 1 no quiero afectar el resto del lista, tengo que reemplazar solo el objeto en el índice – TyGerX

+0

@TyGerX: Por lo tanto, debería haber preguntado acerca de * reemplazar *, no * agregar *. Ver mi edición –

+0

conjunto {Multisectos [índice] = valor; } no funciona, no sé por qué algunos compilan el error porque Multisetst es Lista, creo – TyGerX

0

Intente utilizar List.Insert

Esto debería resolver el problema que tiene.

21

El método .Insert() en List<T> es exactamente para este propósito:

someList.Insert(2, someValue); 

Esto modificaría la colección someList para insertar en el índice someValue2, empujando a otros valores de hasta un índice.

Más información here.

+0

Funciona (^ _ ^) ... –

Cuestiones relacionadas