In C Programming,
void foo()
{
}
void main()
{
printf("%p",foo);
}
will print the address of foo function. Please let me know if there is a way in C# to achieve the same.
In C Programming,
void foo()
{
}
void main()
{
printf("%p",foo);
}
will print the address of foo function. Please let me know if there is a way in C# to achieve the same.
C# is a high-level language. A method does not need to have an "address" -- this is an implementation detail left to the runtime.
However, if you need to interface with C code that requires a method address (for example, to provide a callback to a Windows API method), you can
Example:
static void foo()
{
}
static void Main(string[] args)
{
Delegate fooDelegate = new Action(foo);
IntPtr p = Marshal.GetFunctionPointerForDelegate(fooDelegate);
Console.WriteLine(p);
}
Note, though, that you usually won't need this. Even for the aforementioned example -- passing a callback to a Windows API function -- there are more elegant solutions.
Update 2021: C# 9 now supports function pointers in unsafe code:
static void Foo() { }
static void Main(string[] args)
{
unsafe
{
delegate*<void> ptrFoo = &Foo;
Console.WriteLine((long)ptrFoo);
}
}
In C# methods don't provide address. In C method addresses are available to create pointers to functions that can be used to alternatively call functions by passing them to functions that accept these pointers. In C# you could achieve the same using delegates that are typesafe and these delegates can contain multiple functions too...