如何在数组中插入值,同时保持顺序

本文关键字:顺序 数组 插入 | 更新日期: 2023-09-27 18:02:19

我有一个字符串数组,我想在中间的某个地方添加一个新值,但不知道怎么做。有人能帮我做这个方法吗?

void AddValueToArray(String ValueToAdd, String AddAfter, ref String[] theArray) {
    // Make this Value the first value
    if(String.IsNullOrEmpty(AddAfter)) {
        theArray[0]=ValueToAdd; // WRONG: This replaces the first Val, want to Add a new String 
        return;
    }
    for(int i=0; i<theArray.Length; i++) {
        if(theArray[i]==AddAfter) {
            theArray[i++]=ValueToAdd; // WRONG: Again replaces, want to Add a new String 
            return;
        }
    }
}

如何在数组中插入值,同时保持顺序

你不能在数组中添加元素,数组的大小始终保持不变。

要得到一个添加了项的数组,你需要分配一个包含多一个项的新数组,并将原数组中的所有项复制到新数组中。

这当然是可行的,但效率不高。您应该使用List<string>,它已经有一个Insert方法。

这只在某些特殊情况下有效。

public static void AddValueToArray(ref String[] theArray, String valueToAdd, String addAfter) {
    var count=theArray.Length;
    Array.Resize(ref theArray, 1+count);
    var index=Array.IndexOf(theArray, addAfter);
    var array=Array.CreateInstance(typeof(String), count-index);
    Array.Copy(theArray, index, array, 0, array.Length);
    ++index;
    Array.Copy(array, 0, theArray, index, array.Length);
    theArray[index]=valueToAdd;
}

这是一个示例,但它适用于Type,您可能需要修改您需要的类型。这是递归复制数组的一个例子。

  • 如何找到两种类型之间的最佳拟合的最小协变类型?

查看列表插入方法是如何实现的