C#锐利体验2读书笔记
匿名方法,迭代,匿名方法允许我们以一种“内联”的方法来编写方法代码;匿名方法是直接与委托实例化相关联的,使委托实例化更加直观方便。匿名方法的几个相关问题--参数列表,--返回值,--外部变量。
addButton.Click+=delegate(object sender,EventArgs e){
MessageBox.show(((Button)sender).Text);
}
匿名方法可以在delegate关键字后跟一个参数列表(可以不指定),后边的代码块则可以访问这些参数。如上述代码:如果后边要声明参数,则必须与声明click这个事件所的委托类型的参数列表必须一致。如果不一样就会报错。
注意:不指定参数列表和参数列表为空的区别,
正确:addButton.Click+=delegate{
MessageBox.show(((Button)sender).Text);
}
错误:
addButton.Click+=delegate(){
MessageBox.show(((Button)sender).Text);
}
1,匿名的方法的返回值:如果委托类型的返回值为void,匿名方法里边不能返回任何值;2:如果委托类型的返回值不为Void,匿名方法的返回值必须和委托类型的返回值兼容:delegate void MyDelegate (); //声明委托类型(没有参数,没有返回值。) MyDelegate mydele=delegate{}; //匿名参数实例化委托,MyDelegate 为类型,mydele为变量。delegate(),匿名方法实例化委托。匿名放方法就是把方法的签名去掉。
匿名方法的机制1:静态方法中的匿名方法,2:实例方法中的匿名方法,3:匿名方法中的外部变量。
public class aa{
public delegate void D();
public static void F(){
D d=delegate{
console.writeLine('ok')
}
}
}
上面灰色的代码编译器转换为
public static void F(){
D d=new D(__Method_1)
}
public static void __Method_1(){
console.writeLine('ok');
}
2实例方法
public class aa{
public int x;
public delegate void D();
public void F(){
D d=delegate{
console.writeLine(this.x)
}
}
}
编译
public void F(){
D d=new D(__Method_1)
}
public void __Method_1(){
console.writeLine(this.x);
}
3匿名方法的外部变量
void F(){
int x=123;
D d=delegate{Console.writeLine(x);}
}
上面的代码被编译成
class __Temp
{
public int y;
public void __Method1(){
consoloe.writeLine(y)
}
}
void F(){
__Temp t =new __Temp();
t.y=123;
D d=new D(t.__Method1);
}
C#锐利体验2读书笔记的更多相关文章
- 《你必须知道的.NET》读书笔记三:体验OO之美
此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.依赖也是哲学 (1)本质诠释:“不要调用我们,我们会调用你” (2)依赖和耦合: ①无依赖,无耦合 ...
- 【读书笔记《Bootstrap 实战》】6.单页营销网站
我们已经掌握了很多实用 Bootstrap 的重要技能.现在,是时候拿出更多的创意来帮助客户实现他们全方位在线营销的愿望了.此次将带领大家做一个漂亮的单页高端营销网站. 主要任务如下: □ 一个大型 ...
- 《如何在大学里脱颖而出(How to Win at College)》读书笔记
<如何在大学里脱颖而出(How to Win at College)>读书笔记 图书简介 中文版: 英文版: 作者卡尔·纽波特(Cal Newport)于 2004 年6月以优等生荣誉学会 ...
- <读书笔记> 代码整洁之道
概述 1.本文档的内容主要来源于书籍<代码整洁之道>作者Robert C.Martin,属于读书笔记. 2.软件质量,不仅依赖于架构和项目管理,而且与代码质量紧密相关,本书提出一 ...
- JavaScript DOM 编程艺术(第2版)读书笔记 (7)
动态创建标记 一些传统方法 document.write document.write()方法可以方便快捷的把字符串插入到文档里. 请把以下标记代码保存为一个文件,文件名就用test.html 好了. ...
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...
- 读书笔记:《重来REWORK》
读书笔记:<重来REWORK> <重来Rework--更为简单有效的商业思维>这本书是看了别人的书单而购买的,初 拿到这本书翻看时,感觉有两点与平常的书不同,一是每个小节非常短 ...
- 读书笔记:《梦断代码Dreaming in Code》
读书笔记:<梦断代码Dreaming in Code> 拿到<梦断代码>书后,一口气翻了一遍,然后又用了3天时间仔细读了一遍,也不禁掩卷长叹一声,做软件难.虽难,仍要继续走下去 ...
- 读书笔记系列01-《收获、不止Oracle》
读书笔记系列01-<收获.不止Oracle> 最近计划将看过的Oracle书籍依次系统的总结下读书笔记. 这本书是我个人觉得写的最有趣的Oracle书籍,也是我接触Oracle后第一本完全 ...
随机推荐
- DOM事件: DOM事件级别、DOM事件流、DOM事件模型、DOM事件捕获过程、自定义事件
前端面试中只要问到事件,就肯定会有DOM事件:如果回答出来了,就会一直向下延申,其实这些东西都很简单,但我第一次被问到的时候,也是懵的: DOM事件级别: DOM0 element.onclick = ...
- django缓存相关
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39726347/articl ...
- codeforces --- Round #250 (Div. 2) B. The Child and Set
<传送门> [题目大意] 给你一个sum和一个limit,现在要你在1~limit中找到一些数来使得这些数的和等于sum,如果能找到的话就输出找到的数的个数和这些数,未找到输出" ...
- hadoop2.x大数据视频教程(十二天学会)
- pytest_03_pycharm运行pytest (转:上海悠悠)
前言 上一篇pytest文档2-用例运行规则已经介绍了如何在cmd执行pytest用例,平常我们写代码在pycharm比较多 写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻 ...
- .net core中的Session以及HttpContext对象使用小结
session用于识别用户并保持用户信息,就是一个会话 ,在浏览器不关闭的前提下,可以保存用户的信息,比如登录的保存用户信息从一个网页跳转到另一个网页,你的用户信息就可以用session. .net ...
- java之spring mvc之拦截器
1. springmvc 中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的. 2. 自定义实现一个拦截器的步骤: a). ...
- java之hibernate之加载策略和抓取策略
1.加载策略:指hibernate查询数据时,采用什么样的方式将数据写入内存.Hibernate中提供了两种方式来加载数据:懒加载和即时加载. 2.懒加载又称延迟加载,指使用hiberante API ...
- el-select和el-cascader的visible-change下拉框隐藏时触发相关事件(下拉框下拉显示时不触发)
原文:https://blog.csdn.net/CarryBest/article/details/79959389 今天做项目时,用elementUI框架,需要下拉框隐藏时出发某个函数,用了vis ...
- MyBatis和spring整合简单实现
spring和MyBatis整合: 导入spring和MyBatis的整合jar包,以及其依赖jar包: 导入MyBatis和spring的整合jar包. spring的核心jar包. 定义Mybat ...