C#におけるVarPtrの実現


VarPtrはVBの中の1つの関数で、この関数の作用、変数のアドレスを返すので、はっきり言って1つのポインタで、しかし、.Netプラットフォームはポインタを放棄し、委託を採用し、管理コードに対して、Netの制限が多いので、これも.NETプラットフォーム自体の位置づけに関係があります.
VarptrはC#とVBにあります.NETには、もう存在しませんが、使用しています.NETプラットフォームは、外付けの二次開発を行う際に、USBデバイスインタフェース、COMデバイスなど、VarPtrのような機能を使用する必要がある場合があります.
ここで、VarPtrは.NETプラットフォームにおけるC#の実現方法:
int VarPtr(object e)
{
    System.Runtime.InteropServices.GCHandle gh = System.Runtime.InteropServices.GCHandle.Alloc(e, System.Runtime.InteropServices.GCHandleType.Pinned);
    int gc = gh.AddrOfPinnedObject().ToInt32();
    gh.Free();
    return gc;
}
    

このコードの使い方は、VBのVarptrと一致していますので、必要な方のお役に立てばと思います.