它會插入,如果需要
public static IList<T> InsertR<T>(this IList<T> ilist, int index, T item) {
if (!(index < ilist.Count)) {
T[] array = Array.CreateInstance(typeof(T), index + 1) as T[];
ilist.CopyTo(array, 0);
array[index] = item;
if (ilist.GetType().IsArray) {
ilist = array;
} else {
ilist = array.ToList();
}
} else
ilist[index] = item;
return ilist;
}
或
public static IList InsertR<T>(this IList ilist, int index, T item) {
if (!(index < ilist.Count)) {
T[] array = Array.CreateInstance(typeof(T), index + 1) as T[];
ilist.CopyTo(array, 0);
array[index] = item;
if (ilist.GetType().IsArray) {
ilist = array;
} else {
ilist = array.ToList();
}
} else
ilist[index] = item;
return ilist;
}
你的問題不是很清楚調整。我已經回答了你想問的問題,但是如果你能詳細闡述你想要做的事情,我可能會提供一個更好的答案。 – 2010-06-01 04:30:56
我認爲答案是馬特和伊斯梅爾的組合。我想插入一個項目到位置3,但是還沒有列表中的任何內容。根據Matt的回答,我需要創建一個空列表,其中要插入count> index,然後需要使用Ismail的答案來實際插入它。另一個問題是插入會將所有東西推到上面,所以我幾乎需要在3之前創建任何缺失的條目,然後添加.Add()。那麼,至少這是我想要做的。 LOL – 2010-06-01 05:29:25
你其實不想*插入它,是嗎?如果列表中有足夠的項目,您是不是隻想覆蓋特定元素上的那個?這就是「myList [3] = myModel;」確實。 – 2010-06-01 05:38:05