老兄:我仔细看了你的代码,发现问题出在你的认识上。 对一个对象来说,“NEW”才能给它一个拷贝并分配内存空间;对你的代码剖释如下: 1、你在 Command1_Click 后调用了Call CallableAnywhere(mc1First); 2、Public Sub CallableAnywhere(ByVal c1 As Class1) c1.Comment = "22222222222222" End Sub 你想把对象class作为一个拷贝传送,想法不错,但你在代码里实际上传送过去的是“mc1First”,它是一个在 FORM 里面定义的“旧”对象,而不是一个新对象; 对象只按地址传送--如果没有 NEW 的话。 实际上你并没有“NEW c1” 这样一来,当然就是你看到的结果了。如果 Public Sub CallableAnywhere(ByVal c1 As Class1) Dim c2 As New Class1 c1.Comment = "22222222222222" c2.Comment = "33333333333" End Sub当然你就可以看到C1 和C2的Comment 是不一样的。
老兄:我仔细看了你的代码,发现问题出在你的认识上。
对一个对象来说,“NEW”才能给它一个拷贝并分配内存空间;对你的代码剖释如下:
1、你在 Command1_Click 后调用了Call CallableAnywhere(mc1First);
2、Public Sub CallableAnywhere(ByVal c1 As Class1)
c1.Comment = "22222222222222"
End Sub
你想把对象class作为一个拷贝传送,想法不错,但你在代码里实际上传送过去的是“mc1First”,它是一个在 FORM 里面定义的“旧”对象,而不是一个新对象;
对象只按地址传送--如果没有 NEW 的话。
实际上你并没有“NEW c1”
这样一来,当然就是你看到的结果了。如果
Public Sub CallableAnywhere(ByVal c1 As Class1)
Dim c2 As New Class1
c1.Comment = "22222222222222"
c2.Comment = "33333333333"
End Sub当然你就可以看到C1 和C2的Comment 是不一样的。