In fact, the delegate in C # is equivalent to the method type in Delphi. It is the basis for event processing in C #, as shown in the following example:
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 ();
}
}
Compile into 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 ');