0

If... Else ロジックが機能しない理由がわかりません。

私がアーカイブしようとしているのは、ユーザーがボタンをクリックすると、最初にページの値が配列の長さ以下であるかどうかを確認し、次にページ変数をインクリメントして DisplayPath メソッドを実行することです。ページ変数を配列の長さにします。

アプリを実行してボタンをクリックすると、配列の長さを超えるとすぐにクラッシュします。

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

配列のインデックスは 0 です。n 個の要素を持つ配列は、 0から n-1までのインデックスが付けられます。

于 2013-04-03T08:31:43.430 に答える
1

filePaths.Length 未満でテストする必要があります

  if (page < filePaths.Length)

配列はインデックス 0 から始まり、長さ - 1 のインデックスを付けることができます

于 2013-04-03T08:30:03.103 に答える
-1

そのページが配列内の存在しない場所を指すため、前にpage < filePaths.Length -1追加しているためですpage DisplayPath()filePaths

于 2013-04-03T08:31:09.170 に答える