C#中的delegate其實就相當於delphi中的方法類,是C#中事件處理的基礎,如下例:
using System;
// Declare delegate -- defines required signature:
delegate void SampleDelegate(string message);
class MainClass
{
// Regular method that matches signature:
static void SampleDelegateMethod(string message)
{
Console.WriteLine(message);
}
static void Main()
{
// Instantiate delegate with named method:
SampleDelegate d1 = SampleDelegateMethod;
// Instantiate delegate with anonymous method:
SampleDelegate d2 = delegate(string message)
{
Console.WriteLine(message);
};
// Invoke delegate d1:
d1("Hello");
// Invoke delegate d2:
d2(" World");
Console.ReadLine();
}
}
轉換成delphi就是:
interface
type
TSampleDelegate = procedure(message: string) of Object;
...
procedure showmessage(message: string);
implements
procedure myclass.showmessage(message: string);
begin
writenln('message');
end;
...
d1,d2: TSampleDelegate:
...
//Invoke Delegate d1:
d1 := myclass.showmessage;
d1('hello');
//Invoke Delegate d2:
d2 := myclass.showmessage;
dl('world');