在C编程中,
void foo()
{
}
void main()
{
printf("%p",foo);
}
Run Code Online (Sandbox Code Playgroud)
将打印foo函数的地址.如果C#中有一种方法可以实现相同的目的,请告诉我.
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函数 - 也有更优雅的解决方案.