31

有什么方法可以在特定索引处添加值?我尝试做索引器并且我有列表。在这种情况下有什么技巧可以做到这一点: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
4

5 回答 5

62

上的.Insert()方法List<T>正是为了这个目的:

someList.Insert(2, someValue);

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

更多信息在这里

于 2012-04-23T17:08:07.510 回答
33

List<T>.Insert, 也许?

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

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

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

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

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

于 2012-04-23T17:06:55.513 回答
1

你可以使用List.Insert吗?

于 2012-04-23T17:07:04.823 回答
1

尝试使用List.Insert

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

于 2012-04-23T17:07:58.617 回答
-2

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

于 2018-12-17T22:11:10.070 回答