zoukankan      html  css  js  c++  java
  • 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);
            }
    身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃。
  • 相关阅读:
    inflate
    【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
    安卓延时执行代码
    Listview控件
    安卓的progress
    android studio的弹出层
    解决mysql的日志文件过大的问题
    linux查文件大小
    乔坟往事-姑妄言之
    乔坟往事-村里人家
  • 原文地址:https://www.cnblogs.com/birdofparadise/p/7063083.html
Copyright © 2011-2022 走看看