 分类:
    Mvc EF框架
    
    分类:
    Mvc EF框架
C#委托与lamdba简介
?委托:
l 什么委托:
本质是方法指针
l 委托的作用:
作用:进行方法传递,方法可以当作一个参数进行传递
C#里边要传递方法需要借助委托
l 使用委托一般的步骤:
1:定义委托
Public delegate 返回值方法名称(参数);
2:委托可以关联方法
3:执行委托,就相当于执行方法
?系统委托
作用:简化委托的定义,系统已经定义好,使用的时候直接使用,不需要重复定义
l 系统委托的主要分类
Action:无返回值,有0-16个参数
Func:有返回值,有0-16个参数
?Lamdba表达式
l 作用:
lamdba表达式可以简化方法的定义
l 语法:
(方法参数)=>{方法体};
例如:无参无返回值的lamdba表达式
()=>{};
例如:一个参数无返回值
(a)=>{};
例如:一个参数一个返回值
(a)=>{return a*a};
例如:2个参数1个返回值
(a,b)=>{return a+b};
?事件
事件和委托的区别?
事件是不是一种委托?
事件是一种特殊的委托实例,其实就是在委托的前面加上一个event关键字
加上了event后就会出现一个闪电的标识,闪电的标识就表示一个事件
事件是一种标准
几种做法都可以做,但是事件用在这里更标准一点

事件是有限制的委托
event,限制了委托的使用
1:它只能+=或者-=
2:要执行这个委托在外面不能执行,无法破坏代码的封装性
加不加event,对我们正常使用没有什么影响
事件也是传递的一个方法
事件(一种特殊的委托)
  事件的定义需要event修饰,委托不需要
     
  public event Action interval;
       public void Start( int timespan)
       {
           while (true)
           {
               if (interval != null)
               {
                   interval();
                   System.Threading.Thread.Sleep(timespan);
               }
           }
       }?系统委托
         
   Predicate<int> pre = (a) => { return false; };   //只是bool类型
       Comparison<int> comp = (a, b) => { return 1; };   //比较:需2个参数
            Func<int, bool> func = (a) => { return false; };   //有返回值
            Action<int> action = (a) => { Console.WriteLine(); };   //无返回值
      //定义一个无参无返回值的委托
        public delegate void DEL_Way();
        //定义一个有一个参数无返回值的委托
        public delegate void DEL_Squer(int a);
        //定义一个有2个参数有返回值的委托
        public delegate int DEL_Add(int a, int b);
?Lamdba 表达式
         
  //语法:(方法参数)=>{方法体};
            //无参无返回值的lamdba表达式
            //Action action = () => { Console.WriteLine("Hello lamdba"); };
            //action();
            //1个参数无返回值的lamdba表达式
            //Action<int> action = (a) => { Console.WriteLine(a * a); };
            //action(5);
            //1个参数1个返回值的lamdba表达式
            //Func<int, int> func = (a) => {return   2 * a; };
            //int result = func(7);
            //Console.WriteLine(result);
            //2个参数1个返回值的lamdba表达式
            //Func<int, int, int> func = (a, b) => { return 2 * a + b; };
            //int result = func(7,5);
            //Console.WriteLine(result);           //事件要用+=或-=链接,委托则不用
         
 MyTimer mytime = new MyTimer();
          //   mytime.interval = mytime_interval;
          mytime.interval += mytime_interval1;
       //   mytime.interval -= mytime_interval;
          mytime.interval += mytime_interval2;
       
          mytime.Start(1000);
            Console.ReadLine();
        }
        static void mytime_interval2()
        {
            Console.WriteLine("八月十五中秋佳节");
        }
        static void mytime_interval1()
        {
            Console.WriteLine("10,1日举国同庆");
        }小结:以上是本人对委托和事件知识点的分析归纳,希望对你有所帮助...
看不懂的可以留言问我哦
 50010702506256
50010702506256
         
         
         
         
        