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

配列にアイテムを追加することはできません。常に同じサイズのままです。

項目が追加された配列を取得するには、新しい配列にもう 1 つの項目を割り当て、すべての項目を元の配列から新しい配列にコピーする必要があります。

これは確かに実行可能ですが、効率的ではありません。List<string>代わりに、すでにメソッドがあるa を使用する必要があり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

IListInsertメソッドの実装方法をご覧ください

于 2013-03-05T23:14:02.150 に答える