0

配列の値を拡張できる関数を作成しましたが、次の関数を作成しようとしたときに問題があります1

//This is error free and compiles properly
public string[] addindex(string[] Input)
{
    string[] ar2 = new string[Input.Length + 1];
    Input.CopyTo(ar2, 0);
    ar2.SetValue("", Input.Length);
    Input = ar2;
    return Input;
}

複数のパラメーターをサポートします。

だから、私はこれを作った:

public string[] addindexes(params string[] lists)
{
    string[] ar2;
    for (int x = 0; x < lists.Length; x++)
    {
        ar2 = new string[lists[x].Length + 1];
        lists[x].CopyTo(ar2, 0); //Error here
        ar2.SetValue("", lists[x].Length);
        lists[x] = ar2; //Error here
    }
    return lists;
}

間違った構文か何かを使用しているようです。

4

3 に答える 3

2

配列の配列を渡しているので、に変更params string[] listsする必要があります。params string[][] lists(少なくとも、複数の個別の配列を渡したとしても、メソッドは配列の配列を認識します。)

同様に、戻り値の型を に変更する必要がありますstring[][]

詳細については、これを参照してください。

于 2012-11-01T10:09:56.480 に答える
1

メソッドを使用Resizeして簡単にすることができます:

このメソッドは、指定されたサイズで新しい配列を割り当て、古い配列の要素を新しい配列にコピーしてから、古い配列を新しい配列に置き換えます。

もう 1 つのアイテムを拡張するには:

 Array.Resize(ref list, list.Length + 1);
 list[list.Length - 1] = string.Empty;

複数の 1 を拡張するには:

 int size = 5;
 Array.Resize(ref list, list.Length + size);

 for (int i = list.Length - size; i < list.Length; i++)
     list[i] = string.Empty;
于 2012-11-01T10:12:19.143 に答える
0

そもそも一般的なリストを使用するのはどうですか?

List<string> Input = new List<string>();
Input.Add("new item");
于 2012-11-01T10:11:37.303 に答える