C#方法在索引</t>的List <t>中添加值

时间:2012-04-23 17:05:16

标签: c# list indexing this add

有什么方法可以在特定索引处添加值吗?我尝试做索引器,我有列表。在这种情况下,有没有任何技巧可以做到这一点:D

 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

5 个答案:

答案 0 :(得分:29)

.Insert()上的List<T>方法正是出于此目的:

someList.Insert(2, someValue);

这会修改someList集合,以便在索引someValue处插入2,将其他值推上一个索引。

更多信息here

答案 1 :(得分:25)

List<T>.Insert,也许?

但我建议你可能只想获取/写入 - 而不是插入:

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

请注意,从C#3开始,有更简单的方法来编写这些属性,btw:

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

直接公开组合集合通常也不是一个好主意 - 这意味着你无法控制这些集合中发生的事情。

答案 2 :(得分:1)

尝试使用List.Insert

这可以解决您遇到的问题。

答案 3 :(得分:0)

您可以使用List.Insert吗?

答案 4 :(得分:-1)

您可能正在寻找更像字典或地图的东西。这些类型的集合允许您使用键值对分配对象,因此您始终可以在某个位置分配对象并从同一位置检索对象。您可能认为您需要该列表,因为您不知道要存储多少条记录,但是如果您对最大记录数有所了解,它将有助于您决定是否可以使用“字典”之类的东西。我认为该限制非常高,但是您可以查看Dictionary类以查看限制。