代表

委託是表示方法引用的型別。它們用於將方法作為引數傳遞給其他方法。

委託可以包含靜態方法,例項方法,匿名方法或 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;
    }
}

將方法分配給委託時,請務必注意該方法必須具有相同的返回型別和引數。這與正常方法過載不同,其中只有引數定義方法的簽名。

活動建立在代表之上。