【问题标题】:Why does this simple code not work (ArgumentOutOfRangeException)为什么这个简单的代码不起作用(ArgumentOutOfRangeException)
【发布时间】:2012-05-25 06:40:51
【问题描述】:
int i = 0;
int x = 10;
List<int> group = new List<int>();

while (i < x)
{
    RichTextBoxShowTafel.AppendText(Convert.ToString(group[i]));
    i++;
}

为什么这不起作用?我想显示名为“组”的列表的前 10 个数字。

编辑: 我其实是想创建变量并连续打印出来...

【问题讨论】:

  • 好吧..组是空的...
  • 确切地说,您期望这段代码会做什么?
  • 我要创建变量并连续打印...
  • 你想创建变量是什么意思?你只想打印0-10吗?或者你真的想创建变量?不管这意味着什么......
  • 但我做不到....我真的很想这样做...

标签: c# list while-loop


【解决方案1】:

您永远不会在组变量中添加任何内容。您只实例化了一个空列表。

你最好这样做:

foreach (int item in group)
{
  RichTextBoxShowTafel.AppendText(item.ToString());
}

【讨论】:

    【解决方案2】:

    因为组是空的?由于它没有元素,因此您无法访问 group[0],这是您在第一次迭代中所做的

    【讨论】:

      【解决方案3】:

      这是因为group 是空的!

      当你的循环第一次执行然后i = 0 然后你尝试Convert.ToString(groups[i]) 总是会失败,因为在group 中没有0 的索引

      【讨论】:

        【解决方案4】:

        您应该先在列表中添加元素,然后再尝试获取它们。这就是你得到 ArgumentOutOfRangeException 的原因。您可以通过先添加元素来避免异常。

            int i = 0;
            int x = 10;
            List<int> group = new List<int>();
        
            while (i < x)
            {
                group.Add(i);
                RichTextBoxShowTafel.AppendText(Convert.ToString(group[i]));
                i++;
            }
        

        【讨论】:

        • 谢谢,这也是我需要的!
        【解决方案5】:

        如果您希望 group 填充数字,则必须自己执行此操作。声明和初始化它List&lt;int&gt; group = new List&lt;int&gt;(); 只会创建它。里面什么都没有。如果您想尝试将变量放入其中,可以执行以下操作:

        for(int j = 0; j < 10; j++)
        {
           group.Add(j);
        }
        

        【讨论】:

        • 这正是我所需要的!谢谢!
        • 另一种方法是var group = Enumerable.Range(0, 10).ToList()。如果组不是List&lt;&gt; 不是必需的,也许您甚至可以省略.ToList() 部分。在group 上使用foreach
        猜你喜欢
        • 2013-05-04
        • 1970-01-01
        • 1970-01-01
        • 2021-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多