我正在尝试将委托分配给属于另一个类对象的方法。
TestingClass testObj = new TestingClass();
Delegate myDelegate = testObj.testMethod; //syntax error
我的意图是myDelegate
指出testMethod
. testObj
上面的代码有语法错误。
在 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)
{
....
}