zoukankan      html  css  js  c++  java
  • 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);
            }
  • 相关阅读:
    Java内存回收
    Android四大基本组件介绍与生命周期
    JAVA中获取当前系统时间
    jquery如何判断元素是否被点击_百度知道
    css控制div显示/隐藏方法及2种方法比较原码
    点击图标不断震动效果
    jquery 如何动态添加、删除class样式方法介绍_jquery_脚本之家
    HTML5绘制矩形和圆形并且还有获取在这个图层内的坐标的思路和代码
    Attribute name invalid for tag form according to TLD异常解决办法_gaigai_百度空间
    html5绘图
  • 原文地址:https://www.cnblogs.com/RainPaint/p/9842758.html
Copyright © 2011-2022 走看看