DateTime作为字典中的对象

时间:2014-01-16 15:53:16

标签: vb.net dictionary

我已阅读here字典(字符串,对象)可以容纳多种变量类型。但是,在下面的函数中,endTime似乎没有被分配。下面代码中的行Console.Write(lobjWaveOutList(0)("endTime"))给出了错误'字典中没有给定的密钥'。

Private lobjWaveOutList As New List(Of Dictionary(Of String, Object))()
Public Sub addIndex(waveOut As Object, endTime As DateTime)
    Console.WriteLine("endTime:")
    Console.WriteLine(endTime)
    lobjWaveOutList.Add(New Dictionary(Of String, Object)() From {{"waveOut", waveOut}})
    lobjWaveOutList.Add(New Dictionary(Of String, Object)() From {{"endTime", endTime}})
    Console.Write(lobjWaveOutList(0)("endTime"))
End Sub

我使用以下参数调用了addIndex函数:

waveouts.addIndex(New WaveOut(), DateTime.Now.AddSeconds(10))

2 个答案:

答案 0 :(得分:2)

lobjWaveOutList(0)("endTime")无效,因为它正在访问列表中的第一个字典,该字典仅包含"waveOut"项。 "endTime"项位于列表中的 second 字典中。要获得那个,你需要这样做:

 Console.Write(lobjWaveOutList(1)("endTime"))

正如Neolisk指出的那样,根据你的例子,仅仅有一个包含多个项目的字典而不是一个字典列表似乎更合适,每个字典只包含一个项目。

答案 1 :(得分:0)

因为你有一个词典列表“endtime”在这里:lobjWaveOutList(1)("endTime")