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

时间:2008-12-29 17:53:21

标签: vb.net arrays visual-studio-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

2 个答案:

答案 0 :(得分:2)

是的,当你在.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

答案 1 :(得分:0)

你需要做某种

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

道歉,如果for-each的语法关闭,我通常是C#家伙。但基本问题是你没有初始化数组的每个元素。