以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  字典的值可以是集合吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=41170)

--  作者:smart-grid
--  发布时间:2013/10/12 22:32:00
--  字典的值可以是集合吗?
字典的值可以是集合吗
--  作者:有点甜
--  发布时间:2013/10/12 22:35:00
--  
可以是任意类型。
--  作者:smart-grid
--  发布时间:2013/10/13 0:23:00
--  这样使用结果不正常
Dim li As New List(of Integer)
Dim zd As New Dictionary(Of String, List(Of Integer))

li.Add(1)
li.Add(2)
li.Add(3)
zd.Add("李", li)
li.Add(4)
li.Add(5)
zd.Add("张", li)

For Each k As String In zd.Keys \'显示所有键及其对应的值
    Output.Show(k)
    For Each v As Integer In zd(k) \'显示所有值
        Output.Show(v)
    Next
Next
zd.Clear

结果:

1
2
3
4
5

1
2
3
4
5

--  作者:jspta
--  发布时间:2013/10/13 1:33:00
--  
以下是引用smart-grid在2013-10-13 0:23:00的发言:
Dim li As New List(of Integer)
Dim zd As New Dictionary(Of String, List(Of Integer))

li.Add(1)
li.Add(2)
li.Add(3)
zd.Add("李", li)
li.Add(4)
li.Add(5)
zd.Add("张", li)

For Each k As String In zd.Keys \'显示所有键及其对应的值
    Output.Show(k)
    For Each v As Integer In zd(k) \'显示所有值
        Output.Show(v)
    Next
Next
zd.Clear

结果:

1
2
3
4
5

1
2
3
4
5

哪里不正常了?你添加了2次字典li,li第一次先添加3个项,之后再添加2项,总共五项,所以你最后输出就是5项


--  作者:smart-grid
--  发布时间:2013/10/13 7:24:00
--  莫非字典只是引用了集合?
我需要的结果是:

1
2
3

1
2
3
4
5

--  作者:jspta
--  发布时间:2013/10/13 15:42:00
--  
以下是引用smart-grid在2013-10-13 7:24:00的发言:
我需要的结果是:

1
2
3

1
2
3
4
5

知道你是需要这个,但是你引用的是li这个字典变量,变量是会改变的,不是你添加后就不要变了,你要么重新声明,要么clear掉KEY