c#读书笔记,与大家分享
c#读书笔记,与大家分享
第一部分:C#语言部分
第三章:对象和类型
1.结构和对象
类是存储在堆上的引用类型,而结构是存储在堆栈中的值类型。
2.值类型和引用类型
引用类型的对象只包含对象的引用,它们只给方法传递这个引用,而不是对象的本身,所以对底层对象的修改保留下来。
值类型的对象包含的是实际的数据,所以传递给方法的是数据本身的副本。
比如:int通过值传递给方法,方法给int类型的值的任何改变都不会改变原int对象的值。但是数组或其他引用类型,方法就会使用该引用改变这个数组中的值。
3.ref参数
通过值传递变量是默认的,也可以迫使值参数通过引用传递给方法。要使用关键字ref,这样方法对变量所做的任何改变都会影响到原对象的值。
4.只读字段
其值不需要改变,但是在运行前其值是未知的。可以声明变量是只读的,readonly
5.结构体struct
有时只需要小的数据结构,类提供的功能多余我们所需要的功能时,通常使用结构—性能上可以提要。
结构和类的区别:
(1) 结构是值类型,不是引用类型。它们存放在堆栈中或是内联中。
(2) 结构不支持继承。
(3) 构造函数的工作方式有一些不同。
(4) 可以制定字段如何在内存中布局。
第四章:继承
C#不支持私有继承。
1.结构和类
结构总是派生于System.ValueType,还可以派生于任意多个接口。
类总是派生于用户选择的另一个类,还可以派生于任意多个接口。
2.虚方法
把一个基类函数声明为virtual,该函数就可以任意派生类中重写。
在 派生类的函数从写另一个函数时,要使用override关键字显式声明。
3.抽象类和抽象函数
把类和函数声明为abstract,抽象类不能实例化,而抽象函数没有执行代码,必须在非抽象的派生类中重写。
4.密封类和密封方法
在方法和类前声明为sealed。对于类来说,这表示不能继承该类;对于方法来说,这表示不能重写这个方法。
修饰符上面的还需理解。
5.接口
Public interface IDisposable
{
Void Dispose();
}
声明接口的语句于声明抽象类完全相同,但是不允许提供接口中的任何成员的执行方法。一般,接口只能包含方法,属性,索引器和事件的声明。
不能实例化接口,只能包含其成员的签名。接口成员总是公共的
,不能声明为虚拟或静态。
接口的一个例子是C#中的foreach循环,实际上,foreach循环的内部工作方式就是查询对象,看看它是否实现system.Collections.IEnumerable接口。如果是,编译器就插入IL代码,使用这个接口上的方法替代集合中的成员。否则就会引
c#读书笔记,与大家分享
发一个异常。
接口引用完全可以看做是类引用---但接口引用的强大之处在于,它可以引用任何实现该接口的类。
第五章:运算符和类型强制类型转换
1.Checked和unchecked运算符
如果变量的值超出了变量所能表示的范围,就会发生溢出。如果把一段代码段标记为checked,CLR就会执行溢出检查,发生溢出就会抛出异常。
unchecked则相反,不会抛出异常,但是会导致数据的丢失。默认情况下是unchecked的。
2.is运算符
可以检查对象是否与特定的类型兼容。
3.as运算符
用于执行引用类型的显式类型转换
4.sizeof运算符
可以确定堆栈中值类型的长度,只有在不安全的代码中使用sizeof运算符。
5.typeof运算符
返回一个特定类型的System.Type对象。在使用反射动态查找对象的信息时使用。
6.类型转换
隐式转换方式,显式转换方式
不能经行隐式转换的有:int—short,int---uint,uint---int,float---int.,任何数据类型转化成char。
Decimal转换为任何数字类型。
所有显式类型转换都可能是不安全的。最好截获异常。
7.装箱和拆箱
C#数据类型可以分为在堆栈上分配内存的值类型和在堆上分配内存的引用类型。
通过装想和拆箱可以把值类型转换为引用类型。或把引用类型转换成值类型,装箱用于吧一个值类型转换为引用类型object。
拆箱是个相反的过程,
8.运算符重载
运算符重载的关键是在类实例上不能总是只调用方法或属性,有时还需要做一些其他的工作,比如数值的运算等。
第六章:委托和事件
回调函数实际上是方法调用的指针,也称函数指针。委托的形式实现了函数指针的概念。
1. 委托:当把方法传递给其他方法时,需要使用委托。
C#中声明委托的方法和声明类相似,首先定义,然后实例化。
public delegate void Greeting (string name);
定义了一个委托Greeting,指定该委托的每一个实例都包含一个方法细节,该方法带有一个unit参数,返回void。
委托的一个特征是它们的类型是安全的,可以确保被调用的方法签名是正确的,但是他们不关心调用该方法的是什么类型的对象,甚至不考虑该方法是静态方法还是实例方法。
2. 事件:一般通知代码发生了什么事件,GUI主要处理事件。在发生事件时,运行库需要知道应该执行哪个方法。这就
需要把处理事件的方法传送为委托的一个参数。
基于windows的应用程序也是基于消息的。用户单击窗体上的按钮,windows就会给按钮消息处理程序发送一个WM_MOUSECLICK消息,对于.NET来说,这就是按钮OnClick事件。
在开发基于对象的应用程序时,需要使用另一
c#读书笔记,与大家分享
种对象通信方式,在对象中发生有趣的事情时,就需要通知其他对象发生了什么变化,这里要用到事件。可以把事件用作对象之间的通信介质。
委托就是用作应用程序接收到消息时封装事件的方式。
处理事件主要由事件接收器和事件发送器来完成。在事件接收器的某个地方有一个方法,它负责处理事件。在每次发生已注册的事件时,就执行这个事件处理程序。此时就需要使用委托了,由于无法设置两者之间的引用类型,而是使用委托作为中介。连接事件处理程序的过程称为封装事件。
封装click事件:btn.click+=new EventHandler(Button_Click)
意思是说引发btn的Click事件时,应执行Button_Click方法。EventHandler是事件用于把处理程序(Button_Click)赋予事件(Click)的委托。EventHandler委托已在.NET Framework中定义了。它位于System命名空间,所有在.NET Framework中定义的时间都使用它。
委托要求添加到委托列表中的所有方法都必须有相同的签名。
所以Button_Click方法的定义:
Private void Button_Click(Object sender,Eventargs e)
…… 此处隐藏:2583字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [资格考试]石油钻采专业设备项目可行性研究报告编
- [资格考试]2012-2013学年度第二学期麻风病防治知
- [资格考试]道路勘测设计 绪论
- [资格考试]控烟戒烟知识培训资料
- [资格考试]建设工程安全生产管理(三类人员安全员
- [资格考试]photoshop制作茶叶包装盒步骤平面效果
- [资格考试]授课进度计划表封面(09-10下施工)
- [资格考试]麦肯锡卓越工作方法读后感
- [资格考试]2007年广西区农村信用社招聘考试试题
- [资格考试]软件实施工程师笔试题
- [资格考试]2014年初三数学复习专练第一章 数与式(
- [资格考试]中国糯玉米汁饮料市场发展概况及投资战
- [资格考试]塑钢门窗安装((专项方案)15)
- [资格考试]初中数学答题卡模板2
- [资格考试]2015-2020年中国效率手册行业市场调查
- [资格考试]华北电力大学学习实践活动领导小组办公
- [资格考试]溃疡性结肠炎研究的新进展
- [资格考试]人教版高中语文1—5册(必修)背诵篇目名
- [资格考试]ISO9001-2018质量管理体系最新版标准
- [资格考试]论文之希尔顿酒店集团进入中国的战略研
- 全国中小学生转学申请表
- 《奇迹暖暖》17-支2文学少女小满(9)公
- 2019-2020学年八年级地理下册 第六章
- 2005年高考试题——英语(天津卷)
- 无纺布耐磨测试方法及标准
- 建筑工程施工劳动力安排计划
- (目录)中国中央空调行业市场深度调研分
- 中国期货价格期限结构模型实证分析
- AutoCAD 2016基础教程第2章 AutoCAD基
- 2014-2015学年西城初三期末数学试题及
- 机械加工工艺基础(完整版)
- 归因理论在管理中的应用[1]0
- 突破瓶颈 实现医院可持续发展
- 2014年南京师范大学商学院决策学招生目
- 现浇箱梁支架预压报告
- Excel_2010函数图表入门与实战
- 人教版新课标初中数学 13.1 轴对称 (
- Visual Basic 6.0程序设计教程电子教案
- 2010北京助理工程师考试复习《建筑施工
- 国外5大医疗互联网模式分析




