首页 > 其他 > 详细

匿名委托

时间:2015-02-06 11:10:38      阅读:324      评论:0      收藏:0      [点我收藏+]

Action

系统封装的Action委托,没有参数没有返回值。调用实例为:

class Program
  {
    public delegate void Action();
    static void Main(string[] args)
    {
      Action action = new Action(Method);
      action();
    }
    private static void Method()
    {
      Console.WriteLine("i am is a action");
    }
  }

如果方法的表达很简单,可以使用Lambda表达式,代码如下:

Action action = () => { Console.WriteLine("i am is a action"); };
            action();

Action<T>

系统封装的Action<T>委托,有参数但是没有返回值。调用实例为:

class Program
  {
    public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);
    static void Main(string[] args)
    {
      Action<int,int> action = new Action<int,int>(Method);
      action(2,3);
    }
    private static void Method(int x,int y)
    {
      Console.WriteLine("i am is a action");
    }
  }

使用Lambda表达式编写Action<T>代码如下:

Action<int, int> action = (x, y) => { Console.WriteLine("i am is a action"); };
            action(2,3);

Fun<T>

系统封装的Fun<T>委托,有参数而且返回值。调用实例为:

class Program
  {
    public delegate TResult Fun<in T1, in T2, out TResult>(T1 arg1, T2 arg2);
    static void Main(string[] args)
    {
      Fun<int, int, bool> fun = new Fun<int, int, bool>(Method);
      bool ret = fun(2,3);
    }
    private static bool Method(int x,int y)
    {
      if (x + y == 5)
      {
        return true;
      }
      else
      {
        return false;
      }
    }
  }

使用Lambda表达式编写Fun<T>,代码如下:

Fun<int, int, bool> fun = (x, y) =>
      {
        if (x + y == 5)
        {
          return true;
        }
        else
        {
          return false;
        }
      };
      bool ret = fun(2,3);

匿名委托

原文:http://www.cnblogs.com/zengpeng/p/4276562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!