如何在c#中打印方法的地址?

Sri*_*ist 0 c c#

在C编程中,

void foo()
{
}
void main()
{
  printf("%p",foo);
}
Run Code Online (Sandbox Code Playgroud)

将打印foo函数的地址.如果C#中有一种方法可以实现相同的目的,请告诉我.

Hei*_*nzi 5

C#是一种高级语言.方法不需要具有"地址" - 这是留给运行时的实现细节.

但是,如果需要与需要方法地址的C代码接口(例如,提供对Windows API方法的回调),则可以

  • 创建一个委托和
  • 检索指向该委托的函数指针.

例:

static void foo()
{
}

static void Main(string[] args)
{
    Delegate fooDelegate = new Action(foo);

    IntPtr p = Marshal.GetFunctionPointerForDelegate(fooDelegate);

    Console.WriteLine(p);
}
Run Code Online (Sandbox Code Playgroud)

但请注意,您通常不需要这个.即使对于前面提到的示例 - 将回调传递给Windows API函数 - 也有更优雅的解决方案.