标签:his gate set 方法 class 技术 line rgs opened
#region 第一种 自定义 Action<UpdataUIAction> action = new Action<UpdataUIAction>(m); UpdataUIAction x = new UpdataUIAction(); action.Invoke(x); private void m(UpdataUIAction ui) { ui.UpdateTitle("正在进行自动对应,当前已成功项目!"); } #endregion #region 第二种 匿名函数 Action<UpdataUIAction> action1 = delegate (UpdataUIAction ui) { ui.UpdateTitle("正在进行自动对应,当前已成功项目!"); }; #endregion #region 第三种 Lambda表达式 Action<UpdataUIAction> action2 = (ui) => { ui.UpdateTitle("正在进行自动对应,当前已成功项目!"); };
public class UpdataUIAction { /// <summary> /// 同步更新UI委托 /// </summary> public Action<Action> SynUpdateUI { get; set; } /// <summary> /// 更新进度条UI委托 /// </summary> public Action<int, string> UpdateProgressUI { get; set; } /// <summary> /// 更新的标题 /// </summary> public Action<string> UpdateTitle { get; set; } }
2 Action<CLass>的使用
(1)main函数调用
static void Main(string[] args) { //调用方法的类 AscClass c = new AscClass(); //入参为类的委托,目录是传入更新题目的字符串 Action<UpdateClassAction> action = ui => { for (int i = 0; i < 10; i++) { ui.UpdateTitle.Invoke("委托入参为类的输出"+i); } }; //调用 c.AnsyWorker(action); Console.Read(); }
/// <summary> /// 显示的类,描述用来显示输出的更新字符串 /// </summary> class AscClass { /// <summary> /// 输出的委托和入参的委托一致 /// </summary> private Action<UpdateClassAction> _workAction=null; /// <summary> /// 委托的赋值,开始显示更新字符串 /// </summary> /// <param name="action"></param> public void AnsyWorker(Action<UpdateClassAction> action) { _workAction = action; this.WorkInit(); } /// <summary> /// 显示更新字符串,委托UpdateTitle的方法定义,入参的由_workAction提供 /// </summary> private void WorkInit() { UpdateClassAction actionClass = new UpdateClassAction { UpdateTitle = title => Console.WriteLine(title) }; Thread.Sleep(100); this._workAction(actionClass); } } class UpdateClassAction { public Action<string> UpdateTitle { get;set;} }
(3)结果展示
标签:his gate set 方法 class 技术 line rgs opened
原文地址:https://www.cnblogs.com/123-com/p/12286342.html