C# 删除和插入列表项的替代方法
我正在寻找一种更好的数据结构或方法来简单地替换动态数组中的对象。似乎选择列表,但是我读到并注意到RemoveAt和Insert的性能并没有我希望的那么好 让我详细说明我正在努力实现的目标:C# 删除和插入列表项的替代方法,c#,list,C#,List,我正在寻找一种更好的数据结构或方法来简单地替换动态数组中的对象。似乎选择列表,但是我读到并注意到RemoveAt和Insert的性能并没有我希望的那么好 让我详细说明我正在努力实现的目标: projCraneVertices.RemoveAt(projCraneVertices.Count - 4); projCraneVertices.Insert((projCraneVertices.Count - 3), realCraneVertices[botPoint].clone()); proj
projCraneVertices.RemoveAt(projCraneVertices.Count - 4);
projCraneVertices.Insert((projCraneVertices.Count - 3), realCraneVertices[botPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 3);
projCraneVertices.Insert((projCraneVertices.Count - 2), projCraneVertices[botPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 2);
projCraneVertices.Insert((projCraneVertices.Count - 1), realCraneVertices[topPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 1);
projCraneVertices.Insert((projCraneVertices.Count), projCraneVertices[topPoint].clone());
清单1
projCraneVertices.RemoveAt(projCraneVertices.Count - 4);
projCraneVertices.Insert((projCraneVertices.Count - 3), realCraneVertices[botPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 3);
projCraneVertices.Insert((projCraneVertices.Count - 2), projCraneVertices[botPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 2);
projCraneVertices.Insert((projCraneVertices.Count - 1), realCraneVertices[topPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 1);
projCraneVertices.Insert((projCraneVertices.Count), projCraneVertices[topPoint].clone());
据我所知,您需要一个
Replace
方法。请尝试此扩展:
public static class Extensions
{
public static void Replace<T>(this IList<T> list, int index, T item)
{
list[index] = item;
}
}
公共静态类扩展
{
公共静态void Replace(此IList列表、int索引、T项)
{
列表[索引]=项目;
}
}
比如:
List<int> ints = new List<int>() { 1, 2, 3 };
List<int> ints2 = new List<int>() { 4, 5, 6 };
ints.Replace(0, ints2[0]);
List ints=newlist(){1,2,3};
List ints2=new List(){4,5,6};
整数替换(0,整数2[0]);
上面将列出第一个列表-4、2、3
我还想用列表项的克隆替换列表项2的列表项2
清单2的第1部分
好吧,你可以这样做:
proCraneVertices[2] = realCraneVertices[1].Clone();
使用T列表将解决移除和插入的问题这使用了引擎盖下的数组,并将向您展示一些好的功能,这将有助于避免这些插入方法 您可以使用下面列表提供的一些函数 替换//将项目从一个项目重新映射到另一个项目
我觉得应该这么简单。我以前在没有克隆功能的情况下尝试过类似的方法,但效果并不理想。非常感谢。