【发布时间】:2020-06-22 08:55:47
【问题描述】:
在这里,我希望获得一个类似于函数指针的委托,以指向另一个类(名为 Inner)中的类方法,然后将其传递给静态函数,如下所示:
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# 代码无法编译。我用谷歌搜索,发现几乎所有的委托解释都在谈论委托,它指向内部的类方法。
我的问题是,如何修复代码以使其正常工作?
【问题讨论】:
-
到目前为止的答案都可以,但要在更大的上下文中使用,您可能需要阅读依赖注入。
Unity是 .Net 中最常用的框架之一。
标签: c# function class methods delegates