list数组里面放list数组的问题

use_zj 2010-05-15 02:40:26
Dim collectionnumber As New List(Of Integer)

Dim resultlist As New List(Of List(Of Integer))

我声明了这样两个个数组 我把collectionnumber 放入resultlist 中,但我发现只是将collectionnumber 的引用加到了resultlist中,我想要把collectionnumber 的值加到resultlist中,不知道怎么实现?
附:collectionnumber中的数组在不断的变的,我是不断的把collectionnumber 放入resultlist 中,因为是引用的添加,所以resultlist 中放了n组相同的collectionnumber,我要的是值的添加

另外 如果list不能实现这种效果,有没有其他数组可以?
...全文
731 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
use_zj 2010-05-15
  • 打赏
  • 举报
回复
wuyazhe thankyou 搞定了
兔子-顾问 2010-05-15
  • 打赏
  • 举报
回复
----------------
2,不用list也可以实现的,最简单的就是DataTable,或者自定义数据类型。或者多维数组。不过也有缺点,就是个数是确定的。
----------------

不行的。他在做串口的程序,DataTable的效率无法满足的。数据操作很频繁。
其实你找了好久没合适办法了。诶。我也是,说了好久要总结一下方法了。等我周一到公司总结一下吧。写个blog了。
灵雨飘零 2010-05-15
  • 打赏
  • 举报
回复
帮顶!
沐NeMo 2010-05-15
  • 打赏
  • 举报
回复
引用6楼的方法。
按照LZ的意思:

Public Sub TestList()
'6楼的改一下。
Dim collectionnumber As New List(Of Integer)
Dim resultlist As New List(Of Integer())
collectionnumber.Add(1)
collectionnumber.Add(2)
collectionnumber.Add(3)
resultlist.Add(collectionnumber.ToArray())
collectionnumber.Clear()
collectionnumber.Add(4)
collectionnumber.Add(5)
collectionnumber.Add(6)
resultlist.Add(collectionnumber.ToArray())
For Each ints As Integer() In resultlist
For Each i As Integer In ints
Console.ForegroundColor = ConsoleColor.Yellow
Console.Write(i.ToString() + " ")
Next
Console.WriteLine()
Next
Console.ReadKey()
End Sub

Public Sub TestListOfList()
'这个效果也可以,这个就是你要的List的List。
Dim resultlist As New List(Of List(Of Integer))
Dim collectionnumber As New List(Of Integer)
collectionnumber.Add(1)
collectionnumber.Add(2)
collectionnumber.Add(3)
resultlist.Add(collectionnumber)
collectionnumber = New List(Of Integer)
collectionnumber.Add(4)
collectionnumber.Add(5)
collectionnumber.Add(6)
resultlist.Add(collectionnumber)
For Each ints As List(Of Integer) In resultlist
For Each i As Integer In ints
Console.ForegroundColor = ConsoleColor.Yellow
Console.Write(i.ToString() + " ")
Next
Console.WriteLine()
Next
Console.ReadKey()
End Sub


2,不用list也可以实现的,最简单的就是DataTable,或者自定义数据类型。或者多维数组。不过也有缺点,就是个数是确定的。
兔子-顾问 2010-05-15
  • 打赏
  • 举报
回复
    Public Sub TestList()
'那你要的效果不是这样哦。
Dim collectionnumber As New List(Of Integer)
Dim resultlist As New List(Of Integer())
collectionnumber.AddRange({1, 2, 3})
resultlist.Add(collectionnumber.ToArray())
collectionnumber.Clear()
collectionnumber.AddRange({4, 5, 6})
resultlist.Add(collectionnumber.ToArray())
For Each ints As Integer() In resultlist
For Each i As Integer In ints
Console.Write(i.ToString() + " ")
Next
Console.WriteLine()
Next
Console.ReadKey()
End Sub
use_zj 2010-05-15
  • 打赏
  • 举报
回复
恩 我要的是{(1,2,3),(2,3,5)}这种
兔子-顾问 2010-05-15
  • 打赏
  • 举报
回复
你是不是还是在弄你的串口程序?缓存数据的部分?
兔子-顾问 2010-05-15
  • 打赏
  • 举报
回复
那你需要的是什么样子的?
use_zj 2010-05-15
  • 打赏
  • 举报
回复
比如:collectionnumber 中有(1,2,3),我resultlist.add(collectionnumber),然后我collectionnumber.clear(),再collectionnumber 中增加新元素(2,3,5),再resultlist.add(collectionnumber),我以为resultlist中会是:{(1,2,3),(2,3,5)},但是实际是:
{(2,3,5),(2,3,5)}!!
兔子-顾问 2010-05-15
  • 打赏
  • 举报
回复
你的问题是你定义了一个list,然后定义了这个list的list,访问方法就是逐级访问
resultlist(0)就是你第一个list对象了
再次访问就是
resultlist(0)(0)
这样。第二个问题,没看懂。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧