zoukankan      html  css  js  c++  java
  • 委托

    delegate:和枚举类似既可以定义在类里面也可以在namespace下。

    声明:public delegate int Entrust(int x, int y);注:创建委托实例时传入的参数为方法名

     class MyMath
        {
            public int add(int x, int y) { return x + y; }
            public int sub(int x, int y) { return x - y; }
        }
    class MyMath
        {
             public static int add(int x, int y)
    {
    return x + y;
    } publicstatic int sub(int x, int y)
    {
    return x - y;
    } }

      

    使用:Entrust e=new Entrust(MyMath.add);注:静态方法可以这样用,否则请先创建MyMath的对象

    多播委托:e+=MyMath.sub;注:对于有返回值的方法最好不用多播委托

    匿名委托: e += delegate(int x, int y) { return x * y; };

    Lambda:e += (x, y) => x / y;注:Lambda

    使用:Console.WriteLine(e(8,2));

    系统预定义的常用泛型委托

    Func委托:有多种重载,delegate TResult Func<T1,T2,T3,T4,TResult>——Func<string,int> f = delegate(string x) { return 1; };注:泛型的最后一个参数为返回值类型

    Action委托:相对于Func委托无返回值

    Predicate委托:判断是否符合某标准,只能接受一个参数,参数类型在<>中指定,返回值为bool。Predicate<string> p = delegate(string x) { return true; };

    Comparison委托:比较两个元素,两个参数类型需一致,参数类型在<>中指定,返回值为int,一般用于排序。Comparison<string> c = delegate(string x, string y) { return 1; };

  • 相关阅读:
    分享ASP.NET+jQuery MiniUI后台购物管理
    ASP.NET发送电子邮件
    LINQ学习(三):Where子句
    ASP.NET配置KindEditor文本编辑器
    一步步写自己SqlHelper类库(五):Command对象
    ASP.NET生成静态页面的简单实现
    兼职开发悟出的点点滴滴
    设计模式学习笔记
    if else替代者
    ASP.NET 一生命周期中的额事件
  • 原文地址:https://www.cnblogs.com/haimingkaifa/p/5691860.html
Copyright © 2011-2022 走看看