C# way to add value in a List<T> at index

81,652

Solution 1

List<T>.Insert, perhaps?

But I'd suggest you probably just want to fetch/write - not insert:

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

Note that as of C# 3, there are simpler ways of writing those properties, btw:

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

It's also not generally a good idea to actually expose composed collections directly - it means you have no control over what happens in those collections.

Solution 2

The .Insert() method on List<T> is exactly for this purpose:

someList.Insert(2, someValue);

This would modify the someList collection to insert someValue at index 2, pushing other values up one index.

More information here.

Solution 3

Can you use List.Insert?

Solution 4

Try using List.Insert

This should solve the problem you are having.

Share:
81,652
TyGerX
Author by

TyGerX

I am the most powerful thing in the universe :)

Updated on December 18, 2020

Comments

  • TyGerX
    TyGerX over 3 years

    Is there any way you can add a value at a specific index? I try to do indexator and I have Lists. Is there any trick for making this this in this context :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