码迷,mamicode.com
首页 > 其他好文 > 详细

Action<CLass>的使用和多种简写方法

时间:2020-02-09 12:06:46      阅读:93      评论:0      收藏:0      [点我收藏+]

标签: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();
        }
(2)方法的调用和显示
技术图片
/// <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;}
        
    }
View Code

(3)结果展示

技术图片

 

 

 

Action<CLass>的使用和多种简写方法

标签:his   gate   set   方法   class   技术   line   rgs   opened   

原文地址:https://www.cnblogs.com/123-com/p/12286342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!