以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  搞不懂  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=151893)

--  作者:hb8888
--  发布时间:2020/7/6 23:18:00
--  搞不懂
大师:下面的语句为何加红色的代码就不行?字典的集合为空?
Dim zd As new Dictionary(of String,List(of String))
Dim jh As new List(of String)
jh = DataTables("类型表").GetValues("编号")
For Each zf As String In jh
\'Output.Show(zf)
    Dim jh1 As new List(of DataRow)
    jh1 = DataTables("类型表").Select("编号 = \'" & zf & "\'")
   \'Output.Show(jh1.Count) 
    Dim jh2 As new List(of String)
    For Each tr As DataRow In jh1
        jh2.Add(tr("索引"))
    Next
    zd.Add(zf,jh2)
    \'jh1.Clear
    \'jh2.Clear
Next


--  作者:有点蓝
--  发布时间:2020/7/7 8:51:00
--  
集合是引用类型,和添加到字典里面的是同一个对象。

再说循环里每次都是new的,也没有必要清空,完全多余

--  作者:hb8888
--  发布时间:2020/7/7 9:44:00
--  
那请问如果我把集合定义放在循环外部呢?
--  作者:有点蓝
--  发布时间:2020/7/7 9:49:00
--  
放到哪都会影响字典里的集合。就1楼的用法有什么问题?
--  作者:hb8888
--  发布时间:2020/7/7 10:59:00
--  
如果jh2的定义放在循环外面,不用jh2.clear,不重复增加吗?
--  作者:有点蓝
--  发布时间:2020/7/7 11:01:00
--  
不适合放外面