代表
委託是表示方法引用的型別。它們用於將方法作為引數傳遞給其他方法。
委託可以包含靜態方法,例項方法,匿名方法或 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;
}
}
將方法分配給委託時,請務必注意該方法必須具有相同的返回型別和引數。這與正常方法過載不同,其中只有引數定義方法的簽名。
活動建立在代表之上。