将委托指向类中的方法
本文关键字:方法 | 更新日期: 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)
{
....
}