不同类之间的数据传递

hdztroop 2018-11-13 04:55:08
我在一个项目中有两个类(类1和类2),类1 中有成员p1(public),调用类2中过程s1(public),p1的值在返回时没有改变,是什么原因?是作用范围的原因么?
简化后的代码如下:
Public Class PP1
Public P_Area(4) As Point

Public Sub Set_Area()
For i = 0 To UBound(P_Area)
Mind.Rota_Matrix(P_Area(i))
Next
i = 0
End Sub
End Class

Public Class GG1
Public Sub Rota_Matrix(P1 As Point)
P1.X = P0.X + (P1.X - P0.X) * Cos(Alph) - (P1.Y - P0.Y) * Sin(Alph)
P1.Y = P0.Y + (P1.X - P0.X) * Sin(Alph) + (P1.Y - P0.Y) * Cos(Alph)
End Sub
End Class
...全文
47 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
良朋 2018-11-13
  • 打赏
  • 举报
回复
你的计算貌似只是把P_Area作为参数传过去计算一番,但并没有更新P_Area的值。把女朋友送出去给你摸了摸,也不给添件衣服就送回来了。
良朋 2018-11-13
  • 打赏
  • 举报
回复
P0和Alph的值分别是多少?
看的出,你这是计算坐标系内一点围绕另一点旋转某一角度后新的坐标值,这类的计算旋转中心也就是你的P0的坐标是关键。
  • 打赏
  • 举报
回复
Point是struct,值类型
hdztroop 2018-11-13
  • 打赏
  • 举报
回复
多谢@一树梅,也就是说传值和传引用我没有搞清楚了,多谢!也感谢@良朋 的指点和@娃都会打酱油了 的回帖
yishumei 2018-11-13
  • 打赏
  • 举报
回复
Public Sub Rota_Matrix(P1 As Point)默认是Public Sub Rota_Matrix(ByVal P1 As Point)吧,过程调用完毕后只改变P1的值,不会改变P_Area(i)的值。把ByVal改成ByRef就可以了。

16,554

社区成员

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

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