将项添加到列表数组的开头

时间:2011-10-11 12:24:50

标签: c# list

我目前正在开发一个C#项目,我有一个用类对象初始化的列表,即List<MyClass> myList = new List<MyClass>();

我已经在这个列表中添加了一些数据,但是我需要向它添加更多数据,但是,它需要到数组的开头,而不是最后,有没有办法可以做到这一点。 / p>

感谢您提供的任何帮助。

5 个答案:

答案 0 :(得分:4)

取决于您的“MyList”的类型!如果它是一个简单的列表,那么

myList.Insert(0, new MyClass());

将解决您的问题!

答案 1 :(得分:3)

我假设你正在使用List,为此你可以使用

List<string> mylist = new List<string>();
string[] input = { "fist", "second"  }
mylist.InsertRange(0, input);

更多:List.InsertRange Method

答案 2 :(得分:1)

首先,您所描述的不是数组而是List。 数组将是:

var myArray = new MyClass[]{new MyClass("foo"), new MyClass("Bar"};

其次,数组实现了T的IList和T的ICollection,但是这些方法是显式实现的(你必须强制转换)并且Add / Insert / Remove throw没有实现Exception。这意味着System.Array类是不可变的。

最后,正如其他人在此处提到的,如果您使用的是List,则可以调用Insert。其中有两个参数,第一个是要插入项目的索引,第二个是要插入的元素:

myList.Insert(0, new MyClass("aaa"))

答案 3 :(得分:0)

编辑:问题已更改,以澄清正在使用List<T>

您可以使用Insert()在特定索引处添加(使用0作为开头)。以下是List<T>.Insert()

的文档

http://msdn.microsoft.com/en-us/library/sey5k5z4.aspx

答案 4 :(得分:0)

如果您只是添加到列表的前面,那么可能值得包装一个标准列表,以便在内部将它们添加到结尾,但是当您迭代它时它会反向运行。

这是因为Insert是O(n)而Add是O(1),前提是列表不必在内部调整大小。