C#委托

接触C#委托已经很长时间,但是却一直知道怎么用,而不知道为什么要用。今天再查看了N遍资料的前提下,做一下总结以勉励自己。

1、什么是委托:

托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。

2、委托特性:

  • 委托类似于 C++ 函数指针,但它是类型安全的。

  • 委托允许将方法作为参数进行传递。

  • 委托可以链接在一起;例如,可以对一个事件调用多个方法。

3、为什么用委托:

  • 减少代码量;
  • 代码简洁;
  • 容易扩展。

4、什么时候用委托:

当多个函数有大量代码重复,只有个别参数或者少量不一样时,应该用委托将代码不同的地方封装为一个函数并作为参数传入。

 5、内置委托:

Action

       Action是无返回值的泛型委托。

   Action 表示无参,无返回值的委托

   Action<int,string> 表示有传入参数int,string无返回值的委托

   Action<int,string,bool> 表示有传入参数int,string,bool无返回值的委托

       Action<int,int,int,int> 表示有传入4个int型参数,无返回值的委托

   Action至少0个参数,至多16个参数,无返回值。

   例:

        public void Test<T>(Action<T> action,T p)
        {
            action(p);
        }

Func

   Func是有返回值的泛型委托

   Func<int> 表示无参,返回值为int的委托

   Func<object,string,int> 表示传入参数为object, string 返回值为int的委托

   Func<object,string,int> 表示传入参数为object, string 返回值为int的委托

   Func<T1,T2,,T3,int> 表示传入参数为T1,T2,,T3(泛型)返回值为int的委托

   Func至少0个参数,至多16个参数,根据返回值泛型返回。必须有返回值,不可void

      例:   

        public int Test<T1,T2>(Func<T1,T2,int>func,T1 a,T2 b)
        {
            return func(a, b);
        }
posted @ 2017-06-22 08:50  田云  阅读(149)  评论(0编辑  收藏  举报