我正在处理一些我继承的VB.net代码,并且在尝试查找Interop.Scripting.Dictionary对象中的值时看到了一些非常奇怪的行为。
这是我手表的输出。表达式以斜体显示,返回值以粗体显示:
oAwayBalanceTeam.Dates(“40068”) 1 {整数}对象
CStr(Int(oTempBooking.StartDateTime.ToOADate)) “40068”字符串
oAwayBalanceTeam.Dates(CStr(Int(oTempBooking.StartDateTime.ToOADate))) Nothing Object
注意,当传入字符串文字键“40068”时,第一个监视返回值为1的整数。第二个监视返回字符串“40068”。但是,当从第二个手表传递表达式作为第3个手表中的键值时,返回Nothing。
任何人都有任何想法在这里发生了什么?
答案 0 :(得分:0)
你能在这里提供更完整的repro(特别是你正在使用的Visual Studio版本)。我在Visual Studio 2008 RTM上尝试了以下代码,并在每种情况下都得到了预期的结果。
代码
Module Module1
Sub Main()
Dim map = New Scripting.Dictionary
map("40068") = 1
Stop
End Sub
End Module
观看表达式
答案 1 :(得分:0)
根据同事的建议,我尝试将第二只手表中的表达式分配给一个字符串并将该var传递给Dictionary。
Dim sKey As String
sKey = CStr(Int(oTempBooking.StartDateTime.ToOADate))
oAwayBalanceTeam.Dates(sKey)
由于某种原因,这种方式起作用,而单独表达却没有。虽然我的问题现在已经解决了,但我仍然想知道如果有人有想法会发生这种情况的原因。