在C编程中,
void foo()
{
}
void main()
{
printf("%p",foo);
}
将打印foo函数的地址。 如果C#中有一种方法可以实现相同目的,请告诉我。
答案 0 :(得分: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);
}
但请注意,您通常不需要此。即使对于前面提到的示例 - 将回调传递给Windows API函数 - 也有more elegant solutions。
答案 1 :(得分:0)
在C#方法中不提供地址。在C方法中,地址可用于创建指向函数的指针,这些函数可用于通过将函数传递给接受这些指针的函数来调用函数。在C#中,您可以使用类型安全的委托来实现相同的目的,这些委托也可以包含多个函数...