C# Language déléguer


Exemple

Les délégués sont des types qui représentent une référence à une méthode. Ils sont utilisés pour transmettre des méthodes comme arguments à d'autres méthodes.

Les délégués peuvent contenir des méthodes statiques, des méthodes d'instance, des méthodes anonymes ou des expressions lambda.

class DelegateExample
{
    public void Run()
    {
        //using class method
        InvokeDelegate( WriteToConsole ); 
        
        //using anonymous method
        DelegateInvoker di = delegate ( string input ) 
        { 
            Console.WriteLine( string.Format( "di: {0} ", input ) );
            return true; 
        };
        InvokeDelegate( di ); 
        
        //using lambda expression
        InvokeDelegate( input => false ); 
    }

    public delegate bool DelegateInvoker( string input );

    public void InvokeDelegate(DelegateInvoker func)
    {
        var ret = func( "hello world" );
        Console.WriteLine( string.Format( " > delegate returned {0}", ret ) );
    }

    public bool WriteToConsole( string input )
    {
        Console.WriteLine( string.Format( "WriteToConsole: '{0}'", input ) );
        return true;
    }
}

Lors de l'attribution d'une méthode à un délégué, il est important de noter que la méthode doit avoir le même type de retour et les mêmes paramètres. Cela diffère de la surcharge de méthode «normale», où seuls les paramètres définissent la signature de la méthode.

Les événements sont construits au-dessus des délégués.