阅读目录:
  动态创建函数
  匿名函数不足之处
  理解c#中的闭包
  闭包的优点
  动态创建函数
  大多数同学,都或多或少的使用过。回顾下c#中动态创建函数的进化:
  C# 1.0中:
  public delegate string DynamicFunction(string name);
  public static DynamicFunction GetDynamicFunction()
  {
  return GetName;
  }
  static string GetName(string name)
  {
  return name;
  }
  var result = GetDynamicFunction()("mushroom");
  3.0写惯了是不是看起来很繁琐、落后。 刚学委托时,都把委托理解成函数指针,也来看下用函数指针实现的:
  char GetName(char p);
  typedef char (*DynamicFunction)(char p);
  DynamicFunction GetDynamicFunction()
  {
  return GetName;
  }
  char GetName(char p)
  {
  return p;
  };
  char result = GetDynamicFunction()('m');
  对比起来和c# 1.0几乎一模一样了(引用/指针差别),毕竟是同一家族的。
  C# 2.0中,增加匿名函数:
  public delegate string DynamicFunction(string name);
  DynamicFunction result2 = delegate(string name)
  {
  return name;
  };
  C# 3.0中,增加Lambda表达式,华丽的转身:
  public static Func<string, string> GetDynamicFunction()
  {
  return name => name;
  }
  var result = GetDynamicFunction()("mushroom");