2010-07-15 43 views
0

我有一個通用列表的問題,它包含我創建的類的實例。我很驚訝,每次我向列表中添加一個新對象時,它都會覆蓋之前的條目。這是一個代碼示例,我不能相信它。我使用Visual Studio 2010:將新對象添加到通用列表將覆蓋以前的值

Dim translations As List(Of TranslatedValue) = New List(Of TranslatedValue) 
If Session("ctlTexts") Is Nothing Then 
    Dim reader As IDataReader = DataAccessFunctions.db.GetDataReader("SELECT [ControlID], [ControlTextEN], [ControlTextDE], [ControlTextBG] FROM [dbo].[tbLanguage]", GetConnectionString) 

    While reader.Read() 
     Dim translationBulgarian As String = String.Empty 
     Dim translationGerman As String = String.Empty 
     Dim translationEnglish As String = String.Empty 
     Dim translationKey As String = String.Empty 
     Dim currentLanguageTranslation As String = String.Empty 

     If Not reader.IsDBNull(0) Then 
      translationKey = reader("ControlID") 
     End If 
     If Not reader.IsDBNull(1) Then 
      translationEnglish = reader("ControlTextEN") 
     End If 
     If Not reader.IsDBNull(2) Then 
      translationGerman = reader("ControlTextDE") 
     End If 
     If Not reader.IsDBNull(3) Then 
      translationBulgarian = reader("ControlTextBG") 
     End If 

     Select Case CurrentLanguage 
      Case Language.Bulgarian 
       currentLanguageTranslation = translationBulgarian 
      Exit Select 
      Case Language.English 
       currentLanguageTranslation = translationEnglish 
      Exit Select 
      Case Language.German 
       currentLanguageTranslation = translationGerman 
      Exit Select 
     End Select 

     translations.Add(New TranslatedValue(translationKey, translationEnglish, translationGerman, translationBulgarian, currentLanguageTranslation)) 
    End While 
reader.Close() 
Session("ctlTexts") = translations 

回答

1

從根本上說,你必須問自己:怎麼做的名單(T)的知道如何比較兩個TranslatedValues。

+1

對我來說,這聽起來像你最好使用字典(T) – GregC 2010-07-15 15:13:06

+0

這是怎麼回事? – sloth 2010-07-15 15:20:02

+0

@dkson - Dictionary(Of T)將要求每個條目由某個鍵唯一。這至少會告訴你,如果你有碰撞。 – 2010-07-15 15:50:59

0

我好蠢! :)我已經在我的課堂上宣佈了靜態私人成員:)抱歉打擾你了,謝謝你的回覆!

相關問題