2010-07-15 45 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

我好蠢! :)我已经在我的课堂上宣布了静态私人成员:)抱歉打扰你了,谢谢你的回复!

相关问题