我在 c# 中有以下代码,并想在 VB.NET 中转换它。我不确定它们是什么fixed以及byte*如何转换。Telerik 转换器对此不提供任何帮助。
fixed (byte* ptrShapeBufferPtr = pointerInfo.PtrShapeBuffer)
{
mDeskDupl.GetFramePointerShape(
frameInfo.PointerShapeBufferSize,
(IntPtr)ptrShapeBufferPtr,
out pointerInfo.BufferSize,
out pointerInfo.ShapeInfo);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
由于 VB.NET 不支持指针,因此您必须IntPtr改用 。最简单的方法是使用GCHandle. 然后您使用该AddrOfPinnedObject方法将其指针作为IntPtr.
Dim handle As GCHandle
Try
handle = GCHandle.Alloc(pointerInfo.PtrShapeBuffer, GCHandleType.Pinned)
Dim ptrShapeBufferPtr As IntPtr = handle.AddrOfPinnedObject()
mDeskDupl.GetFramePointerShape(frameInfo.PointerShapeBufferSize, ptrShapeBufferPtr, pointerInfo.BufferSize, pointerInfo.ShapeInfo)
Finally
If handle.IsAllocated = True Then handle.Free()
End Try
Run Code Online (Sandbox Code Playgroud)
请注意,这更像是一种快速而肮脏的解决方案。GCHandle预计不会像这样使用,但它可以工作并且(AFAIK)仍然可以使用。还有其他(更长的)方法可以做到这一点,这些方法更专为此类事情而设计。
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |