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后第一本完全 ...
随机推荐
- 【ARM-Linux开发】【CUDA开发】NVIDIA Jetson TX2 进阶:Nsight Eclipse Edition
嵌入式平台:NVIDIA Jetson TX2 嵌入式系统:Ubuntu16.04 虚拟机系统:Ubuntu14.04 一.NSight简介 Jetpack开发工具为人工智能提供了一整套软件架构,包括 ...
- JS核心系列:原型对象
在JS中,每当创建一个函数对象f1 时,该对象中都会内置一些属性,其中包括prototype和proto, prototype即原型对象. 每一个构造函数都有一个与之相关联的对象,该对象称之为原型对象 ...
- 说说Java Web中的Web应用程序|乐字节
大家好,我是乐字节的小乐,今天接着上期文章<Javaweb的概念与C/S.B/S体系结构>继续往下介绍Java Web ,这次要说的是web应用程序. 1. Web 应用程序的工作原理 W ...
- SpringBoot应用部署到Docker上(docker-io版本)
配置TCP远程连接 为什么要配置这个呢,因为用到的docker-maven-plugin插件默认连接到localhost:2375上的docker.然而:1. 我们的Docker不在本地,执行打包命令 ...
- 最新超简单解读torchvision
torchvision https://pytorch.org/docs/stable/torchvision/index.html#module-torchvision The torchvisio ...
- Gin上传文件到MongoDB gridfs
目录 上传图片 下载图片 上传图片 func imagePost(c *gin.Context) { image, err := c.FormFile("file") if err ...
- scala学习遇到的坑
1:软件是idea,在同一个包中,类名一样,会导致在调用类的时候,程序无法找到正确的类,最后出错. 2:return坑,在方法中,返回值的类型已经指定了,所以可以放心使用return,但是在函数中,没 ...
- Shell编程学习(六)
Shell 脚本条件测试与比较 条件测试方法综述 在Bash的各种条件结构和控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时也会与if等条件语句相结合,来完成测试判断,以减少程序运行的 ...
- golang ---JSON-ITERATOR 使用
jsoniter ( json-iterator )是一款快且灵活的 JSON 解析器 Jsoniter 是最快的 JSON 解析器.它最多能比普通的解析器快 10 倍之多, 独特的 iterator ...
- SQLite介绍和使用
SQLite特点: (1)轻量级,跨平台的关系型数据库,所以支持视图,事务,触发器等. (2)零配置-无需安装和管理配置,存储在单一磁盘文件中的完整的数据库 (3)数据库文件可共享,支持多种开发语言. ...