请教VB.NET中用ByVal做参数传递的问题

besoaring 2016-05-05 02:54:16
初学VB.NET, 用ByVal做参数传递, 但是变量值还是被修改了, 不知道是为啥. 下面是代码, 两个Debug.Print, 结果是不一样的, 第一次是1, 第二次是0, 麻烦大家帮我看一下哪里不对, 谢谢.

Module Module1
Public Structure TTT
Public x As Integer
Public y As Integer
Public z As Integer
End Structure
Sub Main()
Dim mydata(1) As TTT
For i = 0 To 1
mydata(i).x = 1
mydata(i).y = 2
mydata(i).z = 3
Next
Debug.Print(mydata(0).x)
Dim new_data() As TTT = InitialTTT(mydata)
Debug.Print(mydata(0).x)
End Sub
Public Function InitialTTT(ByVal tmp() As TTT)
Dim temp As TTT
temp.x = 0
temp.y = 0
temp.z = 0
For i = 0 To UBound(tmp)
tmp(i) = temp
Next
Return tmp
End Function
End Module
...全文
315 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
besoaring 2016-05-06
  • 打赏
  • 举报
回复
明白了, 多谢
为轮子而生 2016-05-06
  • 打赏
  • 举报
回复
打个比方,演员表上的演员是固定的,也就是已经不能临场换人了,但是演员身上的服装是可以换的吧,总不能说换了衣服就变成了另一个人?
为轮子而生 2016-05-05
  • 打赏
  • 举报
回复
对于数组和类来说,传递时只是一个引用,按址传递,byval只是限制了这个地址不被更改,但是属性仍然指向实例,是可以更改的 搜一下按址传递和按值传递

16,554

社区成员

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

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