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

问题描述 投票:2回答:2

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

昏暗的pCParameters As Integer

pCParameters = VarPtr(参数)

当我执行代码时出现错误

名称'VarPtr'未声明。

vb.net不支持VarPtr.So我如何替换它。

vb.net pointers vb6 vb6-migration
2个回答
1
投票

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

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

-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
© www.soinside.com 2019 - 2024. All rights reserved.