本文内容

  • 委托和泛型委托
    • 委托发展:C# 中委托的发展
    • 泛型委托
  • 委托
    • 声明(定义)委托
    • 实例化委托
    • 调用委托
    • 用 Lambda表达式创建和实例化委托
  • .NET 提供的委托
    • Action 委托
    • Func 委托
    • Predicate 委托
  • 参考资料
  • 修改记录

下载更多 Demo

委托和泛型委托


委托实现了函数指针,这个函数指针跟 C 的函数指针不同,它是类型安全的,确保被调用的方法签名是正确的。只要方法签名跟委托签名匹配,给委托的实例可以是实例方法,或是静态方法。

为什么要有这个东西?我们对把数据作为函数参数很熟悉,但有时,某个方法的操作不是针对数据,而是针对另一个方法。比如,线程,用线程去执行一个方法,或是代码段;再比如,事件,事件是委托的特例,等等。

委托发展:C# 中委托的发展

  • C# 1.0 中,通过用在其他地方定义的方法显式初始化委托来创建委托的实例。
  • C# 2.0 引入了匿名方法(anonymous method)的概念,用匿名方法初始化委托,在委托中执行未命名的内联语句块。
  • C# 3.0 引入了 Lambda 表达式,与匿名方法的概念类似,但更具表现力并且更简练。匿名方法和 Lambda 表达式统称为“匿名函数”,类似闭包(Closure)特性。
  • 通常,针对 .NET Framework 3.5 及更高版本应使用 Lambda 表达式。

下面的示例演示了从 C# 1.0 到 C# 3.0 委托创建过程的发展:

示例1:

);
System.Console.ReadKey();
}
}
}

相关文章: