代表
委托是表示方法引用的类型。它们用于将方法作为参数传递给其他方法。
委托可以包含静态方法,实例方法,匿名方法或 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;
}
}
将方法分配给委托时,请务必注意该方法必须具有相同的返回类型和参数。这与正常方法重载不同,其中只有参数定义方法的签名。
活动建立在代表之上。