2012-09-12 51 views
0

我嘗試獲取每張專輯的歌曲列表。我已經建立2類:相冊&歌,所以我可以爲波紋管組織他們:VB/CLASS問題:只顯示所有記錄的最後一條記錄

Public Class Album 
    Sub New() 
     Entered = Now 
    End Sub 
    Public Entered As DateTime 
    Public AlbumName As String = "" 
    Public Artist As String = "" 
    Public YearReleased As Integer = 1900 
    Public Songs As New List(Of Song) 
End Class 

Public Class Song 
    Public SongName As String = "" 
    Public SongLength As String = "" 
End Class 

然而,當我添加歌曲專輯,我總是進入了最後一首歌曲。這裏是輸出結果的例子。

Protected Sub Test() 
    Dim vAlbum As New Album 
    Dim vsong As New Song 

    vAlbum.AlbumName = "Test 01" 
    vAlbum.Artist = "Jackie" 
    vAlbum.YearReleased = 2012 

    vsong.SongName = "Exit" 
    vsong.SongLength = "1.5" 
    vAlbum.Songs.Add(vsong) 

    vsong.SongName = "Exit II" 
    vsong.SongLength = "2.5" 
    vAlbum.Songs.Add(vsong) 

    For Each sSong As Song In vAlbum.Songs 
     Response.Write(sSong.SongName + "<br>") 
    Next 
End Sub 

OUTPUT:

  • 退出II
  • 退出II
  • 我有谷歌,但到處都找不到磺酰基的最新記錄顯示,所有歌曲。

    任何幫助,歡迎。

    謝謝,弗雷德

    +5

    只是一些隨機的竅門:使用屬性而不是公共領域,並在現場名稱不重複的類名('Song.Name',而不是'Song.SongName '),並且不要在變量前加上無意義的字母...... – sloth

    回答

    1

    你添加相同Song兩次,只是改變其領域。

    你應該使用這樣的事情:

    Dim vAlbum As New Album 
    
    vAlbum.AlbumName = "Test 01" 
    vAlbum.Artist = "Jackie" 
    vAlbum.YearReleased = 2012 
    
    Dim vsong As New Song 
    vsong.SongName = "Exit" 
    vsong.SongLength = "1.5" 
    vAlbum.Songs.Add(vsong) 
    
    vsong As New Song ' create a new instance of Song 
    vsong.SongName = "Exit II" 
    vsong.SongLength = "2.5" 
    vAlbum.Songs.Add(vsong) 
    

    或更好,使用對象初始化或創建一個constructur即採取一切必要的值:

    Public Class Song 
    
        Public SongName As String = "" 
        Public SongLength As String = "" 
    
        Public Sub new(name as String, length as String) 
         SongName = name 
         SongLength = length 
        End Sub 
    
    End Class 
    
    ... 
    
    vAlbum.Songs.Add(new Song("Exit", "1.5")) 
    vAlbum.Songs.Add(new Song("Exit II", "2.5")) 
    
    2

    經典參考書的問題。你的vsong永遠是同一個對象。您需要實例化一個新的實例:

    ... 
    vAlbum.Songs.Add(vsong) 
    vsong = new Song() 
    vsong.SongName = "Exit II" 
    ... 
    
    +0

    謝謝 - 你救了我的一天 –

    相關問題