如何在C#中从数组中删除范围

7
如何在C#中从数组中删除范围,就像使用ArrayList一样?
ArrayList myAL = new  ArrayList();

myAL.Add( "The" );
myAL.Add( "quick" );
myAL.Add( "brown" );
myAL.Add( "fox" );
myAL.Add( "jumped" );
myAL.Add( "over" );
myAL.Add( "the" );
myAL.Add( "lazy" );
myAL.Add( "dog" );   
myAL.RemoveRange( 4, 3 );

如何使用字符串数组对象实现相同的效果?
2个回答

13

通用列表提供了一个RemoveRange()方法。你可以将你的数组转换为列表,然后删除指定范围的元素,再将其转换回数组:

var myList = myArray.ToList();
myList.RemoveRange(index, count);
myArray = myList.ToArray();

要仅删除特定索引处的一个项目,您可以使用 RemoveAt()

var myList = myArray.ToList();
myList.RemoveAt(index);
myArray = myList.ToArray();

如果想要一个静态大小的缓冲区,而不是列表提供的调整大小,则只需要使用数组。由此可知,它们的缓冲区现在更小,并且如果不小心会导致溢出。我认为我们必须问自己是否真的想要一个较小的数组,或者我们想要在静态大小的数组中清零值。我在寻找后者时到达了这里。 - Christopher Pisz

0

你需要遍历你所需的索引,然后将它们复制到一个新的数组中,因为数组不能以那种方式进行编辑,这就是为什么要使用数组列表的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接