Очень странная проблема с оценкой - PullRequest
1 голос
/ 06 октября 2009

Я работаю над некоторым кодом VB.net, который унаследовал, и вижу очень странное поведение при поиске значения в объекте Interop.Scripting.Dictionary.

Вот вывод из моих часов. Выражения выделены курсивом, а возвращаемые значения выделены жирным шрифтом:

oAwayBalanceTeam.Dates ("40068") 1 {Integer} Object

CStr (Int (oTempBooking.StartDateTime.ToOADate)) "40068" Строка

oAwayBalanceTeam.Dates (CStr (Int (oTempBooking.StartDateTime.ToOADate))) Ничего Объект

Обратите внимание, что первые часы возвращают целое число со значением 1, когда передается строковый литерал с ключом "40068". Вторые часы возвращают строку "40068". Однако при передаче выражения из вторых часов в качестве значения ключа в 3 часах ничего не возвращается.

У кого-нибудь есть идеи, что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 06 октября 2009

По предложению коллеги я попытался присвоить выражение из вторых часов в строку и передать этот переменный в Словарь.

Dim sKey As String

sKey = CStr(Int(oTempBooking.StartDateTime.ToOADate))

oAwayBalanceTeam.Dates(sKey)

По какой-то причине это сработало, а само выражение - нет. Пока моя проблема решена, я все равно хотел бы знать, почему это произошло, если у кого-то есть идея.

0 голосов
/ 06 октября 2009

Можете ли вы предоставить более полное воспроизведение здесь (и в частности, какую версию Visual Studio вы используете). Я попробовал следующий код в Visual Studio 2008 RTM и получил ожидаемый результат в каждом случае.

код

Module Module1

    Sub Main()
        Dim map = New Scripting.Dictionary
        map("40068") = 1
        Stop
    End Sub

End Module

просмотренных выражений

  • map ("40068") 1 {Integer} Object
  • CStr (Int ("40068")) "40068" Строка
  • map (CStr (Int ("40068"))) 1 {Integer} Object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...