2008-12-29 14 views
0

我通常使用C#和我試圖通過放寬到他2005年VB陣列作爲VB字段成員的正確使用2005年

下面的QBASIC程序員面向對象編程的樂趣轉換是一個極其簡單的我試圖完成的版本。它成功編譯,但卡對象數組中的所有成員都設置爲「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

好的工作讓51正確:大多數C#程序員會把52放在那裏。 – 2008-12-29 18:03:33

+0

另一種方法是,VB讓它變得模糊不清;)(但是,我不會發現它......) – 2008-12-29 18:04:45

回答

2

是的,當你在.NET中創建一個數組,數組的每一個元素被設置爲元素類型的默認值 - 這是類空/沒有。

您需要在使用它之前填充數組(或期望它充滿空引用)。

請注意,這在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 
0

你需要做某種

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

道歉,如果的語法因爲每個人都關閉了,我通常是一個C#人。但基本問題是你沒有初始化數組的每個元素。