2012-03-12 3 views
0

사전에 자신의 가치를 잃게 : 코드의 다른 부분에서가 나는 내가 이런 식으로 채울 사전이

Dim RoomInfo As New Dictionary(Of Integer, GuestInfo) 
Dim guestCount As Integer = 1 

For Each guest As Guest in Room 
    guest.Code = code 
    guest.Name = name 
    RoomInfo.Add(guestCount, guest) 
    guestCount = guestCount + 1 
Next 

을, 나는 각

에 대한 내 사전에 더 많은 손님을 추가
For Each guest As Guest in Room 
    guest.Code = code 
    guest.Name = name 
    guest.Adults = adults 
    guest.Children = children 
    RoomInfo.Add(guestCount, guest) 
    guestCount = guestCount + 1 
    RoomInfo.Add(RoomInfo.Count + 1, guest) 
Next 

이유를 알 수 없지만 코드를 단계별로 살펴보면 성인과 어린이가 올바른 값을 갖고 있지만 0이 아닌 것을 볼 수 있습니다. 여기

는 예입니다 : 초기 루프에서

, 나는 구조 (고객)에 성인과 어린이를 할당하지 않습니다.

두 번째 루프에서 방에 지정된 게스트가 있는지 확인하고 그렇지 않은 경우 새 구조 (게스트)를 만들고 룸 목록에 추가합니다. 따라서 첫 번째 루프에서는 2 개의 레코드가있을 수 있지만 두 번째 루프에서는 세 번째 레코드를 추가해야하지만, 이렇게하면 세 번째 레코드가 두 번째 레코드에서 성인/자식 카운트를 얻는 것처럼 보입니다. 두 번째 레코드는 0이됩니다.

+0

사전의 키는 고유해야합니다. 카운트에 의존한다면 당신이 어떻게 그들을 독특하게 지키길 바라는 지 알 수 없습니다. 실용적인 접근 방법이 될 수있는 방 번호를 키로 사용하려는 경우 –

+0

하지만 독창적인데 다른 손님을 추가 할 때 키를 사전 카운트보다 하나 높게 증가시킵니다. – Xaisoft

+0

@TimSchmelter 당신이 옳긴해도, 그것은 여기서 문제가되지 않는 것 같습니다. guestCount가 고유 한 상태 인 한 – nik

답변

0

당신은 수도 문자 키 만들기 시도 - Dim mykey As String = {Lastname & "_" & Firstname & "_" & RoomNumber}을 아마 지불 인의 이름과 날짜, 즉, 다음 손님을위한 데이터와 문자열 목록에서 방을 모두 스택은 :

Dim dic As New Dictionary(Of String, List(Of String)) 
관련 문제