课程表

C# 基础教程

C# 高级教程

C# 工具/手册

工具箱
速查手册

C# 匿名方法

当前位置:免费教程 » 程序设计 » C#

我们已经提到过,委托是用于引用与其具有相同标签的方法。换句话说,您可以使用委托对象调用可由委托引用的方法。

匿名方法(Anonymous methods) 提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。

在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。

编写匿名方法的语法

匿名方法是通过使用 delegate 关键字创建委托实例来声明的。例如:

  1. delegate void NumberChanger(int n);
  2. ...
  3. NumberChanger nc = delegate(int x)
  4. {
  5. Console.WriteLine("Anonymous Method: {0}", x);
  6. };
  7.  

代码块 Console.WriteLine("Anonymous Method: {0}", x); 是匿名方法的主体。

委托可以通过匿名方法调用,也可以通过命名方法调用,即,通过向委托对象传递方法参数。

例如:

  1. nc(10);

实例

下面的实例演示了匿名方法的概念:

  1. using System;
  2.  
  3. delegate void NumberChanger(int n);
  4. namespace DelegateAppl
  5. {
  6. class TestDelegate
  7. {
  8. static int num = 10;
  9. public static void AddNum(int p)
  10. {
  11. num += p;
  12. Console.WriteLine("Named Method: {0}", num);
  13. }
  14.  
  15. public static void MultNum(int q)
  16. {
  17. num *= q;
  18. Console.WriteLine("Named Method: {0}", num);
  19. }
  20. public static int getNum()
  21. {
  22. return num;
  23. }
  24.  
  25. static void Main(string[] args)
  26. {
  27. // 使用匿名方法创建委托实例
  28. NumberChanger nc = delegate(int x)
  29. {
  30. Console.WriteLine("Anonymous Method: {0}", x);
  31. };
  32. // 使用匿名方法调用委托
  33. nc(10);
  34.  
  35. // 使用命名方法实例化委托
  36. nc = new NumberChanger(AddNum);
  37. // 使用命名方法调用委托
  38. nc(5);
  39.  
  40. // 使用另一个命名方法实例化委托
  41. nc = new NumberChanger(MultNum);
  42. // 使用命名方法调用委托
  43. nc(2);
  44. Console.ReadKey();
  45. }
  46. }
  47. }

我来试一下

当上面的代码被编译和执行时,它会产生下列结果:

Anonymous Method: 10
Named Method: 15
Named Method: 30
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号