C#学习笔记(三)—–C#高级特性:匿名方法
来源:互联网 发布:golang microservice 编辑:程序博客网 时间:2024/05/20 18:54
匿名方法
- 匿名方法是C#2.0引入的一个功能,并通过C#3.0的lambda得到了大大的扩展。匿名方法类似于lambda表达式,但是没有lambda表达式的几个功能:
①隐式的类型确定的参数
②表达式语句(匿名方法必须是语句块的形式)
③被指定为表达式树时,转换为一个表达式树的能力 - 写匿名方法的形式是delegate关键字后面跟一个参数列表以及一个语句块:
delegate int Transformer (int i);Transformer sqr = delegate (int x) {return x * x;};Console.WriteLine (sqr(3)); // 9
他在语义上与下列的lambda表达式的声明是一样的
Transformer sqr = (int x) => {return x * x;};
- 匿名方法捕获外部变量时的行为与lambda表达式是一样的。
- 完全省略参数生命是匿名方法独有的特性。即使委托需要这样的参数声明。这对声明一个带有空的处理方法的事件是非常有用的:
public event EventHandler Clicked = delegate { };//这段代码可以看出,EventHandler本来是需要object和eventargs参数的,但是delegate{};可以这样写,这是匿名方法唯一的不同于lambda表达式的地方。
这样,在引发事件时就可以避免检查null值。下面的写法也是合法的:
// 省略了参数。Clicked += delegate { Console.WriteLine ("clicked"); };
阅读全文
0 0
- C#学习笔记(三)—–C#高级特性:匿名方法
- C#学习笔记(三)—–C#高级特性:匿名类型
- C#学习笔记(三)—–C#高级特性:扩展方法
- C#学习笔记(三)—–C#高级特性中的委托与事件(上)
- C#学习笔记(三)—–C#高级特性中的委托与事件(中)
- C#学习笔记(三)—–C#高级特性中的委托与事件(下)
- C#学习笔记(三)—–C#高级特性中的委托与事件:关于事件
- C#学习笔记(三)—–C#高级特性:Lambda表达式
- C#学习笔记(三)—–C#高级特性:try语句和异常
- C#学习笔记(三)—–C#高级特性:枚举类型和迭代
- C#学习笔记(三)—–C#高级特性:实现迭代器的捷径
- C#学习笔记(三)—–C#高级特性:可空值类型
- C#学习笔记(三)—–C#高级特性:运算符重载
- C#学习笔记(三)—–C#高级特性:dynamic
- C#2.0新特性—匿名方法
- C#高级程序设计(六)——匿名方法
- C# 高级特性(三)多线程
- c#学习笔记-匿名
- jsp页面文件报错 javax.servlet cannot be resolved to a type
- CentOS6.4下Mysql数据库的安装与配置
- ASP.NET缓存:System.Web.Caching.Cache类和缓存依赖
- iOS系统及微信中不支持audio自动播放
- BZOJ4878: [Lydsy2017年5月月赛]挑战NP-Hard
- C#学习笔记(三)—–C#高级特性:匿名方法
- 8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset
- 商业模式有哪些?
- 网页设计与制作(HTML+CSS)(二)
- java压缩解压文件(代码记录)
- 高性能mysql笔记(七)高性能的索引策略
- 杭电OJ--1.2.3--Climbing Worm
- 2.工厂方法模式
- Android中getResources().getDrawable() 过时的解决方法