2012-04-23 6 views
7

Gibt es eine Möglichkeit, einen Wert für einen bestimmten Index hinzuzufügen? Ich versuche Indexator zu machen und ich habe Listen. Gibt es einen Trick dafür diese in diesem Zusammenhang machen: DC# Möglichkeit zum Hinzufügen von Werten in einer Liste <T> unter Index

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

Haben Sie versucht, die bereits von List bereitgestellten Methoden zu betrachten? Es gibt eine deutliche Möglichkeit, dass man genau das tut, was man braucht. – Servy

+0

INSERT ist nicht gut: D, ich möchte nicht den Rest der Liste geändert werden und ich möchte bei Index – TyGerX

Antwort

16

List<T>.Insert vielleicht?

Aber ich würde vorschlagen, dass Sie wahrscheinlich wollen einfach nur/Schreib holen - nicht einfügen:

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

Beachten Sie, dass wie von C# 3 gibt es einfachere Wege, um diese Eigenschaften zu schreiben, btw:

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

Es ist auch nicht generell eine gute Idee, komponierte Sammlungen direkt zu belichten - es bedeutet, dass Sie keine Kontrolle darüber haben, was in diesen Sammlungen passiert.

+0

hinzufügen/ersetzen ich denke, es bewegt Element [Index] zu Index + 1 Ich möchte nicht den Rest der beeinflussen Liste, ich muss nur das Objekt bei Index ersetzen – TyGerX

+0

@TyGerX: So sollten Sie über * ersetzen *, nicht * hinzufügen * gefragt haben. Siehe meine Bearbeitung. –

+0

set {Multisets [index] = Wert; } funktioniert nicht Ich weiß nicht, warum einige Kompilierfehler becouse Multisetst ist Liste ich denke, – TyGerX

0

Versuchen Sie es mit List.Insert

Dies das Problem lösen, sollten Sie haben.

21

Die .Insert() Methode auf List<T> ist genau für diesen Zweck:

someList.Insert(2, someValue); 

Diese die someList Sammlung ändern würde someValue bei Index 2, drängen andere Werte auf einen Index einzufügen.

Weitere Informationen here.

+0

Es funktioniert (^ _ ^) ... –