我在VB中有一个旧代码。现在我将它转换为vb.net。代码中有一行
Dim pCParameters As Integer
pCParameters = VarPtr(参数)
当我执行代码时,错误发生
未声明名称'VarPtr'。
vb.net不支持VarPtr。所以如何替换它。
答案 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