nullreferenceexception未处理 - 未将对象引用设置为对象的实例

时间:2014-08-21 05:29:51

标签: vb.net visual-studio-2010

每次运行此代码时,它都会向我显示此消息 “nullreferenceexception未处理 - 对象引用未设置为对象的实例。”

   Public Class Point3D
        Public X As Long = 0
        Public Y As Long = 0
        Public Z As Long = 0
    End Class


Public Structure TTriangle
            <VBFixedArray(2)> Public T2D() As Point2D
            <VBFixedArray(2)> Public VertT3D() As Point3D
            <VBFixedArray(2)> Public Real3DZ() As Long
            Public Color As Color
            Public IsDrown As Boolean
            Public IsSelected As Boolean
            Public IsIn As Boolean 'to draw or not??
            Public Sub initialize()
                ReDim T2D(2)
                ReDim VertT3D(2)
                ReDim Real3DZ(2)
                VertT3D(0) = New Point3D
                VertT3D(1) = New Point3D
                VertT3D(2) = New Point3D
            End Sub
End Structure


    ReDim Preserve Triangles(zTrianglesNo)
    Triangles(zTrianglesNo).VertT3D(0).X = Point1.X
    Triangles(zTrianglesNo).VertT3D(0).Y = Point1.Y
    Triangles(zTrianglesNo).VertT3D(0).Z = Point1.Z

我该如何解决?提前谢谢。

1 个答案:

答案 0 :(得分:0)

ReDim Preserve Triangles(zTrianglesNo)
For i As Integer = 0 To Triangles.GetUpperBound(0) '< Added. Initialise the objects
  Triangles(i) = New TTriangle                     '< Added. Initialise the objects
  Triangles(i).initialize()                        '< Added. Initialise the objects
Next                                               '< Added. Initialise the objects
Triangles(zTrianglesNo).VertT3D(0).X = Point1.X
Triangles(zTrianglesNo).VertT3D(0).Y = Point1.Y
Triangles(zTrianglesNo).VertT3D(0).Z = Point1.Z

注意:这将重置阵列中的所有三角形。如果您一次添加一个元素,请不要使用FOR ... NEXT循环,只需初始化要添加的元素。