我有一个字符串数组,我想在中心的某处添加一个新值,但不知道如何执行此操作。任何人都可以为我制作这种方法吗?
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;
}
}
}
答案 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插入方法