-1

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

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

我的意图是myDelegate指出testMethod. testObj上面的代码有语法错误。

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

4

3 回答 3

3

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

Action myDelegate = testObj.testMethod;

委托类型取决于testMethod.

于 2012-12-21T23:45:03.880 回答
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!");
    }
}
于 2012-12-21T23:49:30.343 回答
0

看看 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)
{
    ....
}
于 2012-12-21T23:44:51.063 回答