-2

我想将上面的数组转换为列表,以避免声明数组中元素的数量但无法实现它,因为很明显,如果我尝试在列表上做同样的事情,我会得到一个索引超出范围异常..整天都在努力。我在此处粘贴了我遇到问题的逻辑部分。对基类中的函数进行递归调用(这对于回答这个问题并不重要,只是说清楚)。请帮帮我。

    int[] arr = new int[100];        
    Dictionary<int, List<int>> dict = new Dictionary<int, List<int>>();        

    public override int function(int length, out List<int> cuts)
    {
        cuts = new List<int>();
        if (length < 0)
            return 0;

        if (arr[length] == 0 )
        {
            arr[length] = base.Function(length, out cuts);
            dict.Add(arr[length], cuts);                                
        }
        cuts = dict[arr[length]];
        return arr[length];
    }
4

2 回答 2

0

您无法创建没有大小的数组。你需要为此使用一个列表。

如果您没有使用 Array 的特定原因,最好使用List

List<int> arr = new List<int>();

最后,您还可以将其转换为 Array:

int[] s = arr.ToArray();
于 2012-12-07T07:24:02.607 回答
0

length如果“动态增长”列表的(应该index)小于索引(在您的情况下为“长度”),只需扩展列表。

List<int> arr = new List<int>();        
Dictionary<int, List<int>> dict = new Dictionary<int, List<int>>();        

public override int function(int length, out List<int> cuts)
{
    cuts = new List<int>();
    if (length < 0)
        return 0;

    if (arr.Count <= length)
    {
        arr.AddRange(new int[(length + 1) - arr.Count])
    }

    if (arr[length] == 0 )
    {
        arr.Insert(length,base.Function(length, out cuts));
        dict.Add(arr[length], cuts);                                
    }
    cuts = dict[arr[length]];
    return arr[length];
}
于 2012-12-07T07:38:27.580 回答