将委托指向类中的方法

时间:2012-12-21 23:42:29

标签: c# delegates

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

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

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

在C#中执行此操作的正确语法是什么?

3 个答案:

答案 0 :(得分:3)

您应该将其分配给具有兼容委托类型的变量,例如

Action myDelegate = testObj.testMethod;

委托类型取决于testMethod的定义。

答案 1 :(得分:1)

如果你真的想要使用委托 - 这对于创建一个名字很好的类型很方便 - 定义你自己的一个:

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!");
    }
}

答案 2 :(得分:0)

看看Jon Skeets教程,了解如何使用以及创建委托,直接且易于理解Delegates and Events

以下是一个简单的示例和解释,说明如何根据我为您编写的示例使用它

//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)
{
    ....
}