如何在数组中插入值,保留顺序?

时间:2013-03-05 21:55:58

标签: c# arrays

我有一个字符串数组,我想在中心的某处添加一个新值,但不知道如何执行此操作。任何人都可以为我制作这种方法吗?

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;
        }
    }
}

3 个答案:

答案 0 :(得分:10)

您无法向数组添加项目,它始终保持相同的大小。

要获取添加了项目的数组,您需要分配一个带有一个项目的新数组,并将原始数组中的所有项目复制到新数组。

这当然可行,但效率不高。您应该使用List<string>,而Insert已经有{{1}}元。

答案 1 :(得分:2)

这仅适用于某些特定情况。

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,您可能需要修改所需的类型。这是递归复制数组的一个例子。

答案 2 :(得分:0)

了解如何实施IList插入方法