匿名方法是在初始化委托时内联声明的方法。

例如下面这两个例子:

不使用匿名方法的委托:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication7

{classProgram

{public static int add(int x)

{

return x + 20;

}delegate int otherdel(intparam);public static voidMain()

{

otherdel del=add;

Console.WriteLine("{0}", del(20));

Console.WriteLine("{0}", del(10));

}

}

}

使用匿名方法的委托:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication7

{classProgram

{delegate int otherdel(intparam);public static voidMain()

{

otherdel del= delegate(int x)

{

return x + 20;

};

Console.WriteLine("{0}", del(20));

Console.WriteLine("{0}", del(10));

}

}

}

两种结果是一样的。

使用匿名方法

1)声明委托变量时候作为初始化表达式。

2)组合委托时在赋值语句的右边。

3)为委托增加事件时在赋值语句的右边。

匿名方法语法

delegate (parameters ){implementationcode};

关键字  参数        语句块

匿名方法不会声明返回值类型。但是匿名方法返回值类型必须和委托返回值一样。

参数:参数数量,类型和修饰符必须和委托一样。

但是我们可以使圆括号为空,或省略圆括号来简化匿名方法的参数列表。但是仅在下面两项都为真的情况下才可以这么做。

1,委托的参数列表不包含任何out参数的委托。

2,匿名方法不使用任何参数。

例如下面:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication7

{classProgram

{delegate int otherdel(intparam);public static voidMain()

{

otherdel del= delegate{

cleanup();

printMessage();

};

}

}

}

params参数:

如果委托参数包含params参数,那么params关键字就会被匿名方法的参数列表忽略。如下:

delegate int otherdel(int x,params inty);

otherdel del= delegate(int x,inty)

{-------------};

c#匿名方法用途_C#的匿名方法相关推荐

  1. 匿名网络追踪溯源机制及方法

    Tor作为匿名网络的代表,被誉为"暗网之王",而TOR这个网络具有双面性.Tor通过保护通信双方的身份信息,能有效防止用户个人信息的泄露,成为一种新的网络访问方式.但同时,攻击者也 ...

  2. 2021-02-23关于java的方法区,为什么叫方法区,是否与实际用途相悖?

    关于java的方法区,为什么叫方法区,是否与实际用途相悖? 在java中,栈中存放的是用来保存方法运行时状态的栈帧,存储了局部变量表,操作数栈等,而方法区存放的是已加载的类的基本信息.常量.静态变量等 ...

  3. Android之Inflate()方法用途+setContentView和inflate区别

    引用:http://blog.chinaunix.net/uid-27024249-id-3304935.html Android之Inflate()方法用途 Inflate()作用就是将xml定义的 ...

  4. python的用途实例-python中类方法,实例方法,静态方法的作用和区别

    Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么定义 ...

  5. c#语言怎么定义函数,C#方法方法用法 _C#语言-w3school教程

    C#语言 的 C#方法 C#中的方法是一组执行任务的语句. 每个 C# 程序至少有一个类包含一个名称为Main()的方法. 要使用方法,需要: 定义方法 调用方法 C# 中定义方法 当要定义一个方法时 ...

  6. c#拷贝datatable行_C# DataTable使用方法详解

    在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 1.添加引用 usi ...

  7. Go 学习笔记(34)— Go 方法声明、方法调用、方法值、方法表达式、切片对象方法、指针对象方法

    1. 方法声明 Go 语言的方法非常纯粹, 可以看作特殊类型的函数, 其显式地将对象实例或指针作为函数的第一个参数, 并且参数名可以自己指定, 而不强制要求一定是 this 或 self .这个对象实 ...

  8. python真正实现多线程的方法_python多线程几种方法实现

    匿名用户 1级 2018-05-27 回答 Python进阶(二十六)-多线程实现同步的四种方式 临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能, ...

  9. [改善Java代码]覆写equals方法必须覆写hashCode方法

    覆写equals方法必须覆写hashCode方法,这条规则基本上每个Javaer都知道,这也是JDK API上反复说明的,不过为什么要这样做呢?这两个方法之间有什么关系呢?本建议就来解释该问题,我们先 ...

最新文章

  1. Codeforces 600E Lomsat gelral (树上启发式合并)
  2. 计算机模拟专业,2017年数值模拟专业知识题库
  3. Spring AOP实例——异常处理和记录程序执行时间
  4. python 执行js_Python爬虫之记录一次下载验证码的尝试
  5. 常用linux系统管理工具
  6. 导出数据库数据生成word【2】--itext直接写word中写入内容
  7. java自行车租凭系统项目包_基于java的校园自行车租用管理系统的设计及实现终极版.pdf...
  8. 单点登录系统设计分析
  9. 胡乱学Java_遇见类与对象
  10. Android 游戏破解修改金币
  11. System.InvalidOperationException: Timeout expired. Max Size Pool connections.
  12. 如何手动制作透明的图片相框 可以供android使用
  13. mysql日期函数_英文简写月的转换
  14. 台式计算机如何双屏显示,台式机如何去设置双屏
  15. [转]为ERP的定义“拨乱反正”
  16. App Clips 新特性
  17. Context上下文穿插方式,不是设计模式,但胜于设计模式。
  18. 八十年代出生人的十大尴尬
  19. 互联网公益:回归初心
  20. mt6765芯片原理图mt6765资料打包

热门文章

  1. netty单片机通讯_SSM+Netty实现软硬件通信,真实项目案例
  2. BCompare日志
  3. 美团面试动态规划——整数拆分
  4. Oracle 原理: 公有同义词 和 私有同义词
  5. springboot后台怎么获取前端传过来的excel_开源商城系统包含后台管理和手机端
  6. cmake / add_compile_options、CMAKE_CXX_FLAGS 和 add_definitions 区别
  7. Qt / 如何解决移动了 Qt 的项目,但是 Qt 在原目录下生成编译文件的问题
  8. 乐鑫代理启明云端分享|ESP32 系列教程之四: Windows 搭建 esp-idf 环境
  9. java代码输出伞_在伞中集成测试Web应用程序的问题
  10. 服务器上如何安装两个php网站,服务器安装两个php版本吗