【问题标题】:Can't make an array in C#无法在 C# 中创建数组
【发布时间】:2010-03-22 20:09:30
【问题描述】:

我正在尝试在 C# 中创建一个动态数组,但我收到一条恼人的错误消息。这是我的代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        int[] dataArray;
        Random random = new Random();
        for (int i = 0; i < random.Next(1, 10); i++)
        {
            dataArray[i] = random.Next(1, 1000);
        }
    }

还有错误:

Use of unassigned local variable 'dataArray'

这只是让我感到困惑。我来自VB,所以请温柔一点,大声笑。

干杯。

【问题讨论】:

    标签: c# arrays random


    【解决方案1】:

    你还没有创建数组 - 你已经声明了变量,但没有给它一个值。

    请注意,数组始终具有固定大小。如果你想要一个可以不断添加的数据结构,你应该使用List&lt;T&gt;。但是,我建议一次 计算大小,而不是通过循环的每次迭代。例如:

    private void Form1_Load(object sender, EventArgs e)
    {
        List<T> dataArray = new List<T>();
        Random random = new Random();
        int size = random.Next(1, 10);
        for (int i = 0; i < size; i++)
        {
            dataArray.Add(random.Next(1, 1000));
        }
    }
    

    当然,如果你事先计算出大小,你可以使用数组:

    private void Form1_Load(object sender, EventArgs e)
    {
        Random random = new Random();
        int size = random.Next(1, 10);
        int[] dataArray = new int[size];
        for (int i = 0; i < size; i++)
        {
            dataArray[i] = random.Next(1, 1000);
        }
    }
    

    ...但请注意数组是considered somewhat harmful

    【讨论】:

    • 当我注意到这一点时,我的回答是 1/2。这是最好的答案。作为另一种选择,您可以使用 ArrayList 代替 List。但是,如果只有整数进入数组,List 是最佳选择。
    • 此外,当使用List&lt;T&gt; 时,通常可以提示初始容量,这使得将项目添加到列表中更快。
    • ArrayList 强烈不推荐,因为我们在 .NET 2.0+ 中有泛型。装箱和拆箱使 ArrayList 成为一个糟糕的选择。
    【解决方案2】:

    你必须初始化数组。如果你想要动态的东西,你需要使用 List 对象。

    【讨论】:

      【解决方案3】:

      看来你需要初始化dataArray。

      使用int[] dataArray = new int[10] 而不仅仅是方法第一行的代码。

      其中 10 是您将要处理的元素数量。

      如果您不确定大小,最好使用 ArrayList 或使用 List。

      【讨论】:

      • 在他的例子中,10 是元素的最大个数,因为他试图在 [1,10] 之间设置大小
      【解决方案4】:
          int[] dataArray= new int[10];
          Random random = new Random();
          for (int i = 0; i < random.Next(1, 10); i++)
          {
              dataArray[i] = random.Next(1, 1000);
          }
      

      【讨论】:

        【解决方案5】:

        试试这个:

                Random random = new Random();
                int cnt = random.Next(1, 10);
                int[] dataArray = new int[cnt];
                for (int i = 0; i < cnt; i++)
                {
                    dataArray[i] = random.Next(1, 1000);
                } 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多