以文本方式查看主题 - 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=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 -- 鼓捣出来了,谢谢! |