使用其内存地址设置变量的值

时间:2015-12-25 13:34:01

标签: arrays vb.net memory


我对vb.net有一个大问题(我不喜欢它 - 我更喜欢vb6粉丝。)我想创建一个“3DGraphics”类,我想要那个当有人创建一些顶点并将它们加载到内存中时,他将获得顶点所在位置的地址(简单说:顶点数组的地址 - 我知道如何使用地址使用VarPtrArray )。

然后用户可以获取地址并将其传递给名为“RotateScene”的类中的子,该类将以给定角度旋转每个点。问题是我不知道如何使用传递的地址访问数组的元素。我在谷歌搜索了一下,我找不到任何具体的东西。你知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

使用指向数组的指针的问题是您需要在内存中修复数组,以便垃圾收集器无法移动它。这意味着你不能只获得指针并单独使用它,你只能在后来发布数组的代码块中使用它。

使用指针的Intead,只需使用对数组的引用。在VB.NET中,当您传递数组时,不会复制数组,因此您只需将数组引用发送到改变数组的方法即可。该方法没有获得数组的副本,它获取对数组的引用,因此当它更改原始数组中完成的数组项时。

示例:

' Create an array
Dim vertexes(1) As Double
' Then put something in it
vertexes(0) = 1.0
vertexes(1) = 2.0

' Just pass the array normally
RotateScene(vertexes)
' When the method returns the array items has changed

方法:

Public Sub RotateScene(vertexes As Double())
  ' Change the array items in here
  vertexes(0) = 2.0
  vertexes(1) = 1.0
End Sub