0

我不明白为什么我的 If... Else 逻辑不起作用。

我要存档的是,当用户单击按钮时,它会首先检查 page 的值是否小于或等于数组的长度,然后它会增加 page 变量并运行 DisplayPath 方法,否则它会设置page 变量为数组的长度。

当我运行应用程序并单击按钮时,一旦它增加超过数组的长度,它就会崩溃。

    private string[] filePaths;
    private int page;

    private void Button_Click_3(object sender, RoutedEventArgs e)
    {
        if (page <= filePaths.Length)
        {
            page++;
            DisplayPath(page);
        }
        else
        {
            page = filePaths.Length;
        }
    }
4

4 回答 4

3

filePaths 是一个从零开始的数组,将其更改为

    private string[] filePaths;
private int page;

private void Button_Click_3(object sender, RoutedEventArgs e)
{
    if (page < filePaths.Length-1)
    {
        DisplayPath(++page);
    }
    else
    {
        page = filePaths.Length;
    }
}
于 2013-04-03T08:29:58.373 回答
2

因为filePaths是一个基于零的数组;

if (page < filePaths.Length)
{
    DisplayPath(++page);
}

数组索引为零:具有n 个元素的数组索引从0n-1

于 2013-04-03T08:31:43.430 回答
1

您应该测试小于 filePaths.Length

  if (page < filePaths.Length)

数组从索引零开始,可以索引到 Length - 1

于 2013-04-03T08:30:03.103 回答
-1

应该是page < filePaths.Length -1因为你添加到page 之前 DisplayPath() 因为该页面将指向数组中不存在的位置filePaths

于 2013-04-03T08:31:09.170 回答