0

以下のコードで実行時に null 参照の例外が発生するのはなぜですか? (フォームが開いたときにタイマーが動作を開始すると仮定します)。私は多くのサブで配列を使用するつもりですが、プログラムが非常に長くなるため、可能であれば、各サブで配列を宣言して動作させたくありません。

注: Pictureboxes Enemy1_1、Enemy1_2、Enemy1_3 などは、最初から既にフォーム上にあります。

Public Class Form1
    Dim Array1() As PictureBox = {Enemy1_1, Enemy1_2, Enemy1_3}
    Dim Array2() As PictureBox = {Enemy2_1, Enemy2_2, Enemy2_3}
    Dim Array3() As PictureBox = {Enemy3_1, Enemy3_2, Enemy3_3}

    Private Sub timer1_Tick(sender As Object, e As EventArgs) Handles timer1.Tick
        For index As Integer = 0 To 2
            Array1(index).Left += 5
            Array2(index).Left += 5
            Array3(index).Left += 5
        Next
    End Sub
End Class
4

1 に答える 1

0

以下よりも洗練されたものを探していたのかもしれませんが、LOL...しかし、少なくとも、ページが爆発するのを止めたり、例外が発生している場所を確認したりできます。

Public Class Form1
    Dim Array1() As PictureBox = {Enemy1_1, Enemy1_2, Enemy1_3}
    Dim Array2() As PictureBox = {Enemy2_1, Enemy2_2, Enemy2_3}
    Dim Array3() As PictureBox = {Enemy3_1, Enemy3_2, Enemy3_3}

    Private Sub timer1_Tick(sender As Object, e As EventArgs) Handles timer1.Tick
        For index As Integer = 0 To 2
            If Array1(index) IsNot Nothing Then
                Array1(index).Left += 5
            End If
            If Array2(index) IsNot Nothing Then
                Array2(index).Left += 5
            End If
            If Array3(index) IsNot Nothing Then
                Array3(index).Left += 5
            End If
        Next
    End Sub
End Class
于 2013-10-12T15:44:28.303 に答える