Structure & List(of type)的问题,请各位大侠指教?

randwind 2007-07-17 11:06:36
我现在在模块中定义了如下的几个structure
public structure aa
dim a1 as string
dim a2 as string
end structure

public structure bb
dim b1 as string
dim b2 as string
end structure

public structure cc
dim c1 as list(of aa)
dim c2 as list(of bb)
end structure
public VarT as new list(of cc)
public VarM as new aa

我在程序中使用VarT.item(i).c1.add(VarM)时就出错了,说没有定义New等

但是我使用如下定义程序又不允许
public structure cc
dim c1 as new list(of aa)
dim c2 as new list(of bb)
end structure

请问各位大侠我如何才能实现List(of type)的嵌套操作呢?
因为我的程序要求能动态的增加减少数组,而且应该是二维动态数组,
我想用List(of type)来实现,操作时遇到了以上的问题,请大侠们指教。


...全文
206 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
randwind 2007-07-19
  • 打赏
  • 举报
回复
谢谢,确实这样。我使用类问题就解决了。
Jinglecat 2007-07-17
  • 打赏
  • 举报
回复
a.尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。 // 解释你的 dim c1 as new list(of aa) 不允许的问题

========

再解释下,

实际上对于,值类型的实例字段,如 int, double, struct,可以不显示初始化,编译器会初始化他们各自类型的初始值,而对于引用实例字段,不初始化,就是空引用 null 了

通常结构中,只定义值类型的实例字段,否则传递参数会有“浅拷贝”的问题

所以,LZ 应该考虑使用 类 class
Jinglecat 2007-07-17
  • 打赏
  • 举报
回复
1。
VB 语法不是黑清楚,逻辑上是没有问题的,

2。
但是,你的代码

public structure cc
dim c1 as list(of aa)
dim c2 as list(of bb)
end structure

中 c1,c2 确实没有实例化

3。
对于结构, MSDN C# 是这样描述的:

结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:

a.尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。 // 解释你的 dim c1 as new list(of aa) 不允许的问题

b.结构不能声明默认构造函数(没有参数的构造函数)或析构函数。 // 根据b,你只有定义带参数的构造函数,然后在执行 dim c1 as new list(of aa) 合 dim c2 as new list(of bb)

4。
假如,按 3 的解释是合理,那么问题应该可以解决了,

5。
通常甚用 structure,考虑到性能的问题:结构是按值传递的,特别对应“重量级”的类型,
而且,你这里的成员 c1 和 c2 都是引用类型,
如果按默认值传递方式,我不知道未不会导致“浅拷贝”的问题,有待测试


Hope helpful!

16,720

社区成员

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

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