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
對我來說,這聽起來像你最好使用字典(T) – GregC 2010-07-15 15:13:06
這是怎麼回事? – sloth 2010-07-15 15:20:02
@dkson - Dictionary(Of T)將要求每個條目由某個鍵唯一。這至少會告訴你,如果你有碰撞。 – 2010-07-15 15:50:59