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

支持1个以上的参数。

所以,我做了这个:

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更简单的方法:

此方法分配一个指定大小的新数组,将元素从旧数组复制到新数组,然后用新数组替换旧数组。

再扩展一项:

 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 回答