C#设置没有常量大小的数组的大小

时间:2014-07-18 15:56:57

标签: c# arrays

我有两个数组。第一个数组是用户输入的一组整数。第二个数组没有恒定大小,它取决于第一个数组中输入数字的存在次数。程序搜索第一个数组,并将匹配数字的索引插入第二个数组。

因此,例如,如果数字3在第一个数组中出现5次,则第二个数组的大小将为5。

以下是仅包含搜索的代码片段。 Array arr由用户设置。

        int[] pos = new int[?];
        int z = 0;
        Console.Write("Now enter a number to compare: ");
        int c = Convert.ToInt32(Console.ReadLine());

        for (int j = 0; j < arr.Length-1; j++)
        {
            if (arr[j] == c)
            {   
               pos[z] = j;
                z++;
            }
        }

我确信有一个非常简单的解决方案,我可以忽略。我在第二个数组中没有任何空值,否则会破坏我程序的其余部分,并且大小必须与找到该数字的次数完全相同。

4 个答案:

答案 0 :(得分:2)

.NET中的数组具有固定大小。 “调整”数组大小的唯一方法是创建一个大小合适的新数组,复制所有现有项目,并继续使用新数组而不是旧数组。

或者......您可以使用.NET中的一种动态集合类型,例如List<T>

你声明如下:

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

并通过调用其Add方法向其中添加另一个项目:

pos.Add(j);

如果最后你仍然需要它作为数组,你可以在列表上调用.ToArray()来获取一个包含列表所有元素的正确大小的数组。

答案 1 :(得分:1)

看看

System.Collections.Generic.List<int>.

您可以使用

添加项目
list.add(123)

当你需要一个数组结束时,你可以调用

var array = list.ToArray()

答案 2 :(得分:1)

我会用

List<T>

而不是数组

我相信这是你想要做的最佳选择。

答案 3 :(得分:0)

设置第二个数组的大小与第一个数组的大小相同,因为比较数组的大小应该相等,并且查找相同的大小:

int[] pos = new int[arr.Length];