以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教:字典与集合问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137551)

--  作者:y2287958
--  发布时间:2019/7/9 14:52:00
--  请教:字典与集合问题
如题。
目的:把有规律的字符串转化成集合储存于字典中
问题:储存前每个集合的值是不同的,但存入字典后重新提取出来,结果全部是一样的,什么原因?如何修改?

代码如下:绕来绕去,自己都给绕晕了
Dim dic As New Dictionary(Of String, object)
Dim lst As new List(of String)
Dim sss As String = "11|22|33|44/66|77|88|99/01|02|03|04|05"
For Each ss As String In sss.split("/")
    lst.Clear
    For Each s As String In ss.split("|")
        lst.Add(s)
    Next
    Output.Show(String.join(vbcrlf,lst.ToArray))
    dic.Add(ss,lst)
Next
Dim ls As List(of String) = dic("11|22|33|44")
Output.Show(String.join(vbcrlf,lst.ToArray))
ls = dic("66|77|88|99")
Output.Show(String.join(vbcrlf,lst.ToArray))
ls = dic("01|02|03|04|05")
Output.Show(String.join(vbcrlf,lst.ToArray))

或者说:如何直接给字典中的集合赋值?
[此贴子已经被作者于2019/7/9 14:54:20编辑过]

--  作者:有点蓝
--  发布时间:2019/7/9 14:57:00
--  
Dim dic As New Dictionary(Of String, object)

Dim sss As String = "11|22|33|44/66|77|88|99/01|02|03|04|05"
For Each ss As String In sss.split("/")
    Dim lst As new List(of String)
    For Each s As String In ss.split("|")
        lst.Add(s)
    Next
    \'Output.Show(String.join(vbcrlf,lst.ToArray))
    dic.Add(ss,lst)
Next
Dim ls As List(of String) = dic("11|22|33|44")
Output.Show(String.join(vbcrlf,ls.ToArray))
ls = dic("66|77|88|99")
Output.Show(String.join(vbcrlf,ls.ToArray))
ls = dic("01|02|03|04|05")
Output.Show(String.join(vbcrlf,ls.ToArray))


--  作者:有点蓝
--  发布时间:2019/7/9 14:59:00
--  
集合属于对象引用,不管被多少个地方引用,都指向同一个内存地址。所以需要new不同的集合,使用多个对象
--  作者:y2287958
--  发布时间:2019/7/9 15:09:00
--  
噢,原来如此,又学一招,多谢蓝版!图片点击可在新窗口打开查看
[此贴子已经被作者于2019/7/9 15:11:15编辑过]

--  作者:y2287958
--  发布时间:2019/7/9 15:23:00
--  
再问:
如何我想在字典中某个指定的键值直接加上一个元素,如何操作?
例如:键"11|22|33|44"目前对应的值为“11,22,33,44”4个元素,现在想在这基础上加上一个或多个元素,怎么搞?谢谢

--  作者:y2287958
--  发布时间:2019/7/9 15:30:00
--  
鼓捣出来了,谢谢!