2

我有一个字符串数组,我想在中心的某处添加一个新值,但不知道该怎么做。任何人都可以为我做这个方法吗?

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

3 回答 3

10

您不能将项目添加到数组中,它始终保持相同的大小。

要获得一个添加了项目的数组,您需要分配一个包含更多项目的新数组,并将所有项目从原始数组复制到新数组。

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

于 2013-03-05T22:02:24.343 回答
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,您可能需要修改所需的类型。这是一个递归复制数组的例子。

于 2013-03-05T22:43:07.443 回答
0

查看IList Insert 方法是如何实现的

于 2013-03-05T23:14:02.150 回答