繁体   English   中英

在VB 2005中正确使用数组作为字段成员

[英]Proper usage of array as field member in VB 2005

我通常使用C#,并且试图通过将Qbasic程序员简化为VB 2005将其转换为面向对象编程的乐趣。

以下是我要完成的工作的极其简化的版本。 它可以成功编译,但是卡对象数组中的所有成员都设置为“ Nothing”。 测试行抛出NullReferenceException。 我究竟做错了什么?

    Sub Main()
        Dim deck1 As New Deck
        Console.WriteLine("Test: " & deck1.cards(2).face)
    End Sub

    Class Card
        Public face As String
        Sub New()
            face = "Blank"
        End Sub
    End Class

    Class Deck
        Public cards(51) As Card
    End Class

是的,当您在.NET中创建数组时,该数组的每个元素均设置为元素类型的默认值-对于类为null / Nothing。

您需要在使用数组之前填充它(或期望它充满空引用)。

请注意,这在C#中的行为将完全相同。

编辑:由于没有人实际发布的人口代码仍然有效,所以这里是:

Class Deck
    Public cards(51) As Card

    Public Sub New()
        For i As Integer = 0 To cards.Length-1
            cards(i) = New Card()
        Next
    End Sub
End Class

你需要做一些

For Each currentItem As String in Me.face
 currentItem = "Blank"
End

如果for-each的语法关闭,我很抱歉,我通常是C#。 但基本问题是您尚未初始化数组的每个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM