【问题标题】:calling an array index with a variable使用变量调用数组索引
【发布时间】:2017-06-08 15:51:16
【问题描述】:

我正在尝试测试列表中的特定元素,并将其与用户输入的字符串进行比较。它在 if 语句中:
if (textboxinput.Text.ToString() == main.steps[current])
在这种情况下,current 是一个等于 0 的整数,并且在 if 语句完成 current++ 之后。 这是一个新的 wpf 表单窗口,通过单击 MainWindow wpf 表单上的按钮打开。 main 从包含我们列表的 MainWindow1 类实例化: public List<string> steps = new List<string>(); 每当我运行此代码时,我都会收到参数超出范围异常。

简而言之:我正在尝试用变量替换列表的索引,它说它超出了范围。 仍在学习 c#,这可能是一个简单的修复,这可能是我忘记的一个非常明显的规则,但任何帮助将不胜感激,因为同样的异常也发生在数组上。 这是按钮被点击的事件

int current = 0;
private void buttonanswer_Click(object sender, RoutedEventArgs e)
    {

        if (textboxinput.Text.ToString() == main.steps[current])
        {
            textboxoutput.Foreground = Brushes.Green;
            textboxoutput.AppendText(textboxinput + Environment.NewLine);
            textboxinput.Clear();


        }
        else
        {
            textboxoutput.Foreground = Brushes.Red;
            textboxoutput.AppendText(textboxinput + Environment.NewLine);
            textboxinput.Clear();
        }
        current++;
    }

【问题讨论】:

  • 你能展示你实例化 main.steps 数组的代码吗?
  • 'MainWindow main = new MainWindow();'这是你要找的吗?我只是使用 main.steps 来调用
  • 除非你指的是这个? ` public List 步骤 = new List(); `
  • public List <string> steps = new List<string>(); 表示 main.steps 包含零个元素,因此 main.steps[current] 超出范围。您必须先填充main.steps
  • 感谢您的回答似乎是问题所在!

标签: c# wpf visual-studio list


【解决方案1】:

确保在循环电流时,它始终小于 main.steps 数组的长度。请记住,如果一个数组包含 5 个元素,例如,它们的编号为 0、1、2、3 和 4。很可能您允许 current 达到数字 5(或在您的特定情况下您的数组的大小)。这种类型的错误会导致使用数组时出现越界异常。

【讨论】:

  • current 在程序开始时初始设置为0,然后在button_click事件结束时加1。我第一次检查这个时出现异常,所以current的值is = 0。 list.add 函数用于将用户输入的字符串添加到列表中。我认为列表与数组的不同之处在于它们可以添加到其中,并且它们的大小会自动增长。
  • 您打印的是最新的吗?打印语句始终是调试的关键。绝对确保在崩溃时 current 的值为 0。发布更多代码可能会更容易找到问题的根源。
  • 我添加了按钮点击事件代码,同时我会打印出来。
  • 我调试了一下,我输出了数组中的元素个数,更新正常,输入4个输入后是4个,出错时电流为0。
  • 如果在你这样做之前元素的数量是 4 并且 current 肯定是 0,那么我不得不说我没有猜测。如果我不得不猜测,它的问题可能位于其他地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
相关资源
最近更新 更多