我正在尝试将委托分配给属于另一个类对象的方法。
TestingClass testObj = new TestingClass();
Delegate myDelegate = testObj.testMethod; //syntax error
我的目的是将myDelegate
指向testMethod
中的方法testObj
。上面的代码有语法错误。
在C#中执行此操作的正确语法是什么?
答案 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)
{
....
}