C# in Depth阅读笔记1:C#1特性
1.委托
委托是对包含返回值和参数的行为的一种封装,类似于单一方法的接口。
委托是不易变的(就像string),system.delegate下的combine和remove方法都只能产生一个新的委托。这样就可以很安全地传递委托的引用,而不必考虑一致性,线程安全的问题。
委托实现步骤:
(1)声明委托类型:如delegate void one(object two)
(2)具有与委托匹配的方法如:void three(object )
(3)创建委托实例如:one test1=new one(three)
(4)调用: test1.invoke(object )或test1(object)
委托链的返回值是最后一个委托的返回值。
2.对事件的理解:(事件和委托)
事件是对委托的一种封装,就像是一个委托类型的属性。通过只将事件暴露给外部,使外部只能进行add/remove的操作。而字段风格的事件只是一种简写。
3.值类型 引用类型(http://www.tracefact.net/CSharp-Programming/Type-Fundamentals.aspx)
值类型主要由两类组成:结构(struct),枚举
结构分为以下几类:
Numeric(数值)类型
整型
浮点型
decimal
bool
用户定义的结构。
结构不能有公开的无参构造函数
引用类型:
class、interface、delegate、object、stirng ,dynamic(数组是引用类型)
变量的值在其声明的位置存储,局部变量的值存储在栈上,实例变量的值存储在实例本身存储的地方。值类型的变量值是其本身,引用类型变量的值是对象实例的引用,而引用实例总是存储在堆中。
所有类型继承自System.Object类型,这是个引用类型,但是只读而不可改变(String也一样),所有值类型继承自System.ValueType,这是个引用类型,但是它的继承除System.enum外都是值类型。
被作为方法的参数传递时,C#默认采用的是值传递(pass by value);添加ref(out)参数后,采用引用传递。
ref参数必须被事先初始化,out参数在方法内初始化。
C# in Depth阅读笔记1:C#1特性的更多相关文章
- C# in Depth阅读笔记3:C#3特性
1.隐式类型 var a=new Dictionary<string ,list<person>>();可以简化代码,增强可读性. 2.简化初始化 (1)设置简单属性 Pers ...
- C# in Depth阅读笔记2:C#2特性
1.方法组转换 c#2支持一个从方法组到兼容委托类型的隐式转换,即如: button.click+=new eventhandler(logevent)可以写成 button.click+=logev ...
- Mongodb Manual阅读笔记:CH5 安全性
5 安全性 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读 ...
- 阅读笔记 1 火球 UML大战需求分析
伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本 <火球 UML大战需求分析>,首先 ...
- [阅读笔记]Software optimization resources
http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++ 7. The efficiency of differe ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- <<UML大战需求分析>>阅读笔记(2)
<<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...
- uml大战需求分析阅读笔记01
<<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...
- Hadoop阅读笔记(七)——代理模式
关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...
随机推荐
- Android学习总结——文件储存
Android中文件存储的操作: 1.Activity的openFileOutput()方法可以把数据输出到文件中2.创建的文件保存在/data/data/<package name>/f ...
- HDU 4333 Revolving Digits 扩展KMP
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4333 题意:给以数字字符串,移动最后若干位到最前边,统计得到的数字有多少比原来大,有多少和原来同样,有多少 ...
- hdu 4930 Fighting the Landlords--2014 Multi-University Training Contest 6
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4930 Fighting the Landlords Time Limit: 2000/1000 MS ...
- jar包和war包的区别:
jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性了,这些jar包一般都会放在lib目录下. war是一个web模 ...
- yum安裝的包如何保留到本地
一, 很多时候,我们一直用yum安装的软件,但是毫无疑问,很多人都会想yum安装的软件的包存放在哪里了呢? 这是因为yum默认并不保存你所安装的包,那么如何才能保留安装的软件包呢? 方法很简单:修改y ...
- RAID技术介绍和总结
简介 RAID是一个我们经常能见到的名词.但却因为很少能在实际环境中体验,所以很难对其原理 能有很清楚的认识和掌握.本文将对RAID技术进行介绍和总结,以期能尽量阐明其概念. RAID全称为独立磁盘冗 ...
- oracle 数据库学习
1.更改数据库用户名密码: alter user '用户名' identified by ’password'. 2.查看数据库有哪些用户:sqlplus system/password ;selec ...
- C#调用WebService实例和开发(转)
1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...
- Spring-----9、容器中bean的生命周期
转载自:http://blog.csdn.net/hekewangzi/article/details/45648771
- linux学习笔记之进程间通信
一.基础知识. 1:进程通信基础(interProcess Communication, IPC):管道,FIFO(命名管道),XSI IPC,POSIX 信号量. 2:管道. 1,缺陷. 1)部分系 ...