名称'VarPtr'未声明。在旧的vb代码中

时间:2011-11-05 09:11:21

标签: vb.net pointers vb6 vb6-migration

我在VB中有一个旧代码。现在我将它转换为vb.net。代码中有一行

  

Dim pCParameters As Integer

     

pCParameters = VarPtr(参数)

当我执行代码时,错误发生

  

未声明名称'VarPtr'。

vb.net不支持VarPtr。所以如何替换它。

2 个答案:

答案 0 :(得分:1)

这不是那么简单,因为.NET中的变量是受管理的。要完全按照您的要求进行操作,您需要查看GCHandle.Alloc并固定变量以使其无法移动。然后你可以得到它的记忆地址 这样的事情(来自记忆):

GCHandle handle = GCHandle.Alloc(pCParameters , Pinned )
IntPtr ptr = handle.AddressOfPinnedObject

答案 1 :(得分:-3)

是的我找到了答案。新的VarPtr功能是

Public Function VarPtr(ByVal e As Object) As Integer
Dim GC As GCHandle = GCHandle.Alloc(e, GCHandleType.Pinned)
Dim GC2 As Integer = GC.AddrOfPinnedObject.ToInt32
GC.Free()
Return GC2