【问题标题】:If... Else... logic on Button_Click not working如果...否则... Button_Click 上的逻辑不起作用
【发布时间】:2013-04-03 08:28:16
【问题描述】:

我不明白为什么我的 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;
        }
    }

【问题讨论】:

    标签: c# wpf logic


    【解决方案1】:

    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;
        }
    }
    

    【讨论】:

    • 对不起,我应该提到我在代码的另一部分将 page 变量设置为 0。
    • 这不是重点,我想 DisplayPath 正在使用您的数组,例如 filePaths[page]。如果 page == filePaths.Length 这将爆炸,因为数组中的最大索引是 filePaths.Length-1
    • 好的,谢谢!明白了。但我必须将其更改为 if (page
    【解决方案2】:

    因为filePaths 是一个从零开始的数组;

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

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

    【讨论】:

      【解决方案3】:

      你应该测试小于 filePaths.Length

        if (page < filePaths.Length)
      

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

      【讨论】:

        【解决方案4】:

        它应该是page &lt; filePaths.Length -1,因为您要添加到page 之前 DisplayPath() 因为那个页面会指向数组filePaths中一个不存在的地方@

        【讨论】:

          猜你喜欢
          • 2023-03-09
          • 2015-09-19
          • 1970-01-01
          • 2018-08-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多