C#中 --- Action 委托
来源:互联网 发布:windows 文件名 utf8 编辑:程序博客网 时间:2024/06/14 00:55
Action委托的用法,它封装一个了方法,该方法不具有参数且不返回值。
当你使用Action委托,则不需要显式定义一个委托封装的无参数的过程。
下面的代码显式声明一个名为的委托ShowValue并将分配到的引用Name.DisplayToWindow实例给其委托实例的方法。
using System;using System.Windows.Forms;public delegate void ShowValue();public class Name{ private string instanceName; public Name(string name) { this.instanceName = name; } public void DisplayToConsole() { Console.WriteLine(this.instanceName); } public void DisplayToWindow() { MessageBox.Show(this.instanceName); }}public class testTestDelegate{ public static void Main() { Name testName = new Name("Koani"); ShowValue showMethod = testName.DisplayToWindow; showMethod(); }}
下面的示例简化了此代码实例化Action而不是显式定义新的委托,并向其分配指定的方法的委托。
public class testTestDelegate{ public static void Main() { Name testName = new Name("Koani"); Action showMethod = testName.DisplayToWindow; showMethod(); }}你还可以使用Action委托与 C# 中的匿名方法,如下面的示例所示。
public class Anonymous{ public static void Main() { Name testName = new Name("Koani"); Action showMethod = delegate() { testName.DisplayToWindow();} ; showMethod(); }}
你还可以分配到 lambda 表达式Action委托实例,如下面的示例所示。
public class LambdaExpression{ public static void Main() { Name testName = new Name("Koani"); Action showMethod = () => testName.DisplayToWindow(); showMethod(); }}
Action带参数的情况,直接看例子
使用Action<T>委托与 C# 中的匿名方法,如下面的示例所示。
using System;using System.Windows.Forms;public class TestAnonMethod{ public static void 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!"); } private static void ShowWindowsMessage(string message) { MessageBox.Show(message); }}
lambda 表达式Action<T>委托实例,如下面的示例所示。
using System;using System.Windows.Forms;public class TestLambdaExpression{ public static void Main() { Action<string> messageTarget; if (Environment.GetCommandLineArgs().Length > 1) messageTarget = s => ShowWindowsMessage(s); else messageTarget = s => Console.WriteLine(s); messageTarget("Hello, World!"); } private static void ShowWindowsMessage(string message) { MessageBox.Show(message); }}
阅读全文
0 0
- C#中 --- Action 委托
- C# Action<T> 委托
- C# Action 委托
- C# Action<T> 委托
- C# Action委托方法
- C# Action委托类型
- C# 委托 delegate Action
- c#中Action<T>和Func<T>委托
- C#委托之 Action<T>委托
- C# Action 委托 + lambda 表达式
- c#委托Action和Func
- C# Action和Func委托
- C#的委托区别 Action,Func, Predicate
- C#的委托 Action<>和Func<>
- C#委托类型-(Func,Action,Predicate,lambda)
- C# 泛型委托 Action/Func
- C#笔记 委托 事件 匿名方法 Action
- C# 委托(Delegate Action Func Predicate)
- Android原生项目集成React Native
- 自适应空间的PopupWindow,动态修改显示位置(支持上下)
- Spring集成Quartz框架的小案例
- HDFS数据操作
- 基于size的优化
- C#中 --- Action 委托
- 牛课网--直通BAT面试算法精讲课{10元优惠码}
- plplus创建用户命令
- QT QML初体验随笔之QQuickView(15)
- 连接mysql出现Lost connection to MySQL server at 'reading initial communication packet', system error: 0
- CentOS7.2安装JDK + Tomcat
- 原件常识:以“光”为传媒的光电耦合器
- 淘淘商城系列——单点登录接口文档分析
- Ubuntu 16.04安装ssh远程登录主机服务器