Здесь я буду sh, чтобы получить делегатный указатель на функцию, указать на метод класса, который находится в другом классе (с именем Inner), а затем передать его в функцию stati c, как показано ниже:
public class Inner
{
public int M = 3;
public void F() { Console.WriteLine("f"); }
public void G() { Console.WriteLine("g"); }
}
class Program
{
public static void Caller(Action a)
{
a();
}
static void Main(string[] args)
{
var i = new Inner();
var f = i.F;
var g = i.G;
f();//error
g();//error
Program.Caller(f);
Console.WriteLine("Hello World!");
}
}
Я из c / c ++, и в c / c ++ указатель на функцию очень прост, но этот код C# не компилируется. Я гуглил и обнаружил, что почти все объяснения делегатов говорят о делегате, который указывает на метод класса внутри себя.
Мой вопрос: как исправить код, чтобы он работал?