将委托指向类中的方法

本文关键字:方法 | 更新日期: 2023-09-27 17:49:27

我正在尝试将一个委托分配给属于另一个类对象的方法。

TestingClass testObj = new TestingClass();
Delegate myDelegate = testObj.testMethod;   //syntax error

我的意图是将myDelegate指向testObj中的testMethod方法。以上代码有语法错误。

在c#中做这个的正确语法是什么?

将委托指向类中的方法

你应该将它分配给一个具有兼容委托类型的变量,例如

Action myDelegate = testObj.testMethod;

委托类型取决于testMethod的定义

如果您真的打算使用委托(这对于创建命名良好的类型很方便),请定义一个您自己的委托:

class Program
{
    delegate void D1();
    static void Main(string[] args)
    {
        var testObj = new Program();
        D1 myDelegate = testObj.TestMethod;
        myDelegate.Invoke();
    }
    void TestMethod()
    {
        Console.WriteLine("Foo!");
    }
}

看看Jon Skeets教程如何使用以及创建代表,它是直接和简单地理解代表和事件

下面是一个简单的例子,并根据我为你写的例子来解释如何使用它

//Define a delegate here in your Class
public delegate void MyMessageHandler(string message);

你可以这样使用它:

public void DoWork(MyMessageHandler callback)
{
    string message = "";
    ....
    callback(message);
}

然后像这样调用它:

public Main()
{
    DoWork(ProcessMessages);
}
public void ProcessMessages(string message)
{
    ....
}