• C#_委托类型以及Action/Fanc_2018Oct


    委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。

    委托特别用于实现事件和回调方法。所有的委托都派生自 System.Delegate 类。

          (简单说就是委托是一个空壳,调用委托就是对其赋值(值为某一方法)并执行该值;)

          简单实现五步骤:

         1.声明委托类;                        -->(如: public delegate void MyDelegate();)

         2.定义目标函数  ;                      --> (即写一个或多个需要委托去执行的方法,此方法必须和委托返回值类型参数类型保持一致)

         3.声明一个委托变量;                   -->(MyDelegate deleg;)

         4.将目标函数赋值给委托类;           -->(一般用+/-=符号进行赋值;如 deleg=method1; deleg+= method2;)

         5.调用委托,执行目标方法;                  -->(deleg();    // 执行方法为method1 和 method2)  

     C#库中有两个做好的委托  ( Action  /  Fanc   )

          Action   

          只代表void类型的方法    

         格式 :

                   action
                   action<参数>

         参考代码:

    public static void SayHi()
            {
                Console.WriteLine("sayHi");
            }
            
            public static void SayHiOnePar(int number)
            {
                Console.WriteLine("SayHiOnePar");
            }
            public static void Main(string[] args)
            {
                //委托看的是方法返回值类型和参数类型
                //只要满足该类型的方法都能委托
                Action action = SayHi;
                action();
                Action<int> action01 = SayHiOnePar;
                action01(10);
            }

          Fanc

         针对有返回值类型的

         格式:

                  Func<参数,参数,参数.....返回值类型>

         参考代码:

     public static string TestStr()
            {
                Console.WriteLine("无参数 有返回值");
                return string.Empty;
            }
    
            public static float TestFloat(int i, double d)
            {
                Console.WriteLine("两个参数 一个返回值");
                return 15.5f;
            }
            public static void Main(string[] args)
            {
                //一个代表返回值类型
                Func<string> func01 = TestStr;
                func01();
                Func<int, double, float> func02 = TestFloat;
                func02(10, 15.5);
            }
  • 相关阅读:
    两类斯特林数的整理
    SXOI2019游记
    3.13校内测试
    Python Flask 实现移动端应用接口(API)
    CentOS下实现Flask + Virtualenv + uWSGI + Nginx部署
    iOS组件化开发入门 —— 提交自己的私有库
    Runtime ----- 带你上道
    iOS核心动画以及UIView动画的介绍
    GCD中各种队列和任务执行方式的组合
    iOS消息转发机制和使用
  • 原文地址:https://www.cnblogs.com/RainPaint/p/9842758.html
Copyright © 2020-2023  润新知