c# - 委托(delegate)给私有(private)函数作为不同类中方法的参数

标签 c# delegates function-pointers

让我们使用私有(private)方法f()g()A。让类 B 有公共(public)方法 h。是否可以将指向 A.g 的指针/委托(delegate)从方法 A.f 传递给 B.h

考虑以下代码:

Class B
{
    public B() {}

    public h(/*take pointer/delegate*/)
    {
        //execute method from argument
    }
}

Class A
{
    private int x = 0;
    private void g()
    {
        x = 5;
    }

    private void f()
    {
        B b = new B();
        b.h(/*somehow pass delegate to g here*/);
    }
}

调用 A.f() 后,我希望 A.x5。是否可以?如果是,怎么办?

最佳答案

您可以创建一个 Action方法的参数:

public h(Action action)
{
    action();
}

然后这样调用它:

b.h(this.g);

可能值得注意的是 Action 有通用版本表示带有参数的方法。例如,Action<int>会将任何方法与单个 int 匹配参数。

关于c# - 委托(delegate)给私有(private)函数作为不同类中方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30361288/

相关文章:

c# - 检查返回值而不将其分配给变量

c# - 如何直接在 C# 中写入程序的 StdOut Stream?

ios - 实现嵌入在两个独立容器 Controller 中的 View 之间的委托(delegate)

C++ 自己的观察者模式

c++ - 如何使用参数包参数 typedef 函数指针类型

c# - Blazor输入+数据列表如何将所选项目绑定(bind)到对象

c# - 来自网页的 Javascript 源代码

ios - 为什么我的委托(delegate)方法没有在 Storyboard中调用?

Windows 窗体线程和事件 - ListBox 及时更新,但进度条遇到巨大延迟

类 Java 代码(映射、函数指针)