委托代理action 的四种方式
1.
Action<T>Delegate
个人理解:和func一样,但是没有返回值
Eg1: 传统型
delegatevoid DisplayMessage(string message);
publicclassTestCustomDelegate
{
publicstaticvoid Main()
{
DisplayMessage messageTarget;
if(Environment.GetCommandLineArgs().Length > 1)
messageTarget =ShowWindowsMessage;
else
messageTarget =Console.WriteLine;
messageTarget("Hello,World!");
}
privatestaticvoid ShowWindowsMessage(string message)
{
MessageBox.Show(message);
}
}
Eg2;
publicstaticvoid Main()
{
Action<string> messageTarget;
if(Environment.GetCommandLineArgs().Length > 1)
messageTarget =ShowWindowsMessage;
else
messageTarget =Console.WriteLine;
messageTarget("Hello,World!");
}
privatestaticvoid ShowWindowsMessage(string message)
{
MessageBox.Show(message);
}
}
Eg3:
publicstaticvoid Main()
{
Action<string> messageTarget;
if(Environment.GetCommandLineArgs().Length > 1)
messageTarget = delegate(string s) {ShowWindowsMessage(s); };
else
messageTarget = delegate(string s) {Console.WriteLine(s); };
messageTarget("Hello,World!");
}
privatestaticvoid ShowWindowsMessage(string message)
{
MessageBox.Show(message);
}
Eg4:lamba
publicstaticvoid Main()
{
Action<string> messageTarget;
if(Environment.GetCommandLineArgs().Length > 1)
messageTarget = s =>ShowWindowsMessage(s);
else
messageTarget = s =>Console.WriteLine(s);
messageTarget("Hello,World!");
}
privatestaticvoid ShowWindowsMessage(string message)
{
MessageBox.Show(message);
}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。