我通常使用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
答案 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#家伙。但基本问题是你没有初始化数组的每个元素。