【发布时间】:2014-11-06 08:06:59
【问题描述】:
有一个字符串数组
string[] lines
我想删除第一个元素。所以如果数组有 5 个元素,我想以 4 个结尾。
有很多方法可以做到这一点:
创建一个新的字符串数组,其大小与原来的减一相同。然后简单地复制所有元素(第一个元素除外)。我不喜欢这样,因为,好吧,你必须创建一个全新的数组并且看起来重复了内存使用(?)
使用像
List这样的集合来实现方法。但那将是同样的故事:我必须将我的字符串数组转换为列表,然后删除第一个元素,然后将列表转换为字符串数组(因为我需要一个字符串数组,而不是列表)。System.Array.Resize()似乎能够“裁剪”数组,这正是我所需要的。但是,它会裁剪“最右边”的元素,而我需要裁剪第一个(最左边的)元素。
我的问题是:有没有更简单的方法来消除字符串数组中的第一个元素,最终得到一个大小比原始数组小一的数组?
【问题讨论】:
-
AFAIK 数组是不可变的。
System.Array.Resize()通过使用选项 1 来实现。 -
如果你真的需要这个,你可能想要一个 CircularBuffer。正如谷歌所证明的那样,周围有很多 C# 实现。
-
不..你不能不复制..你能做的最好是(),创建一个自定义类,
-
@JamesBarrass 没错。因此,
Resize<>方法的参数是ref T[] array;如果保留现有实例,则不需要ref(IsByRef)。