zoukankan      html  css  js  c++  java
  • C#中委托。

    委托(delegate):是一个类型。其实winform中控件的事件也是特殊的委托类型。

    如:

    自定义委托:自定义委托在winform中的用法。

    当要在子线程中更新UI时,必须通过委托来实现。

          private  delegate void myDelegate(string str);
            private void btbdelegate_Click(object sender, EventArgs e)
            {
                Task ta2 = Task.Factory.StartNew(() => DoWork());  
    
            }
    
            private void DoWork()
            {
                //显示委托。
                myDelegate mydele = SetText;// new myDelegate(SetText);//我觉得只是把地址赋值给了委托。
                int i = 0;
                while (i < 1000)
                {
                    btbdelegate.Invoke(mydele, i.ToString());
                    btbdelegate.Invoke(new Action(() => { btbdelegate.Text = i.ToString(); } ));//
                    i++;
                }
              
            }
            private void SetText(string str)
            {
                btbdelegate.Text = str;
            }

    .net 框架自带委托:

    1.Func委托类型

    Func是有返回值的泛型委托,可以没有参数,但最多只有16个参数,并且必须要有返回值。

          private void btbdelegate_Click(object sender, EventArgs e)
            {
                //Task ta2 = Task.Factory.StartNew(() => DoWork());
                FuncTest();
            }
            private void FuncTest()
            {
                Func<string, string> functest = FuncText;//FuncText方法返回值必须是string类型。
                btbdelegate.Text = functest("fun111");
            }
            private string FuncText(string str)
            {
                return str;
            }

     2.Action委托类型
    Action是没有返回值的泛型委托,可以没有参数,但最多只有16个参数。

         private void btbdelegate_Click(object sender, EventArgs e)
            {
                //Task ta2 = Task.Factory.StartNew(() => DoWork());
                FuncTest();
                ActionTest();
            }
            private void ActionTest()
            {
                Action<string, string> method = (str1, str2) => 
                { btbdelegate.Text = str1 + str2; };//方法体。
                method("11", "22");
            }
  • 相关阅读:
    Spring 梳理-启用MVC
    Spring 梳理-MVC-配置DispatcherServet和ContextLoaderListener
    Spring 梳理-MVC-前端控制器DispatchServlet及URL请求处理过程
    Spring 梳理-AOP
    Spring 梳理-运行时动态注入bean
    Spring 梳理-bean作用域
    Spring 梳理-profile与条件化定义bean
    Spring 梳理-bean配置与装配
    Spring 梳理-容器(container)
    iframe
  • 原文地址:https://www.cnblogs.com/longdb/p/7763915.html
Copyright © 2011-2022 走看看