深入.NET平台和C#编程
第一章 深入.NET框架
1…NET框架的魅力
.NET是开发.NET应用程序的核心基础,.NET框架提高了软件的可复用性、可扩展性、可维护性和灵活性;对Web应用的强大支持。
2…NET框架结构
主要包含公共运行语言时(CLR)和框架类库(.NET Framework)。
1.WPF:是微软操作系统的 核心开发之一
2.WCF:程序进行通信
3.WF:工作流
4.Windows CardSpace :验证网络使用者身份的新方法
5.LINQ:各种数据源编写LINQ查询
3.CLR
CLR全称公共运行语言时,它是所有.NET应用程序运行时的环境,是所有.NET应用程序都要使用的编程基础。
CLR的组成:
包含三个组成部分CLS(公共语言规范)和CTS(通用类型系统)以及MSIL(中间语言)。
4.FCL
一部分被封装好的功能的集合。
1.NET的核心类库:
1.System : 此命名空间包含所有其他的命名空间。
2.System.Collect.Generic : 支持泛型操作。
3.System.IO :支持对文件的操作。
4.System.NET : 支持对网络协议的编程。
5.System.Data : 提供对表示ADO.NET结构类的访问。
6.System.Windows.Forms : 用于开发Windows应用程序。
7.System.Drawing : 支持GDI+基本图形操作。
5.类和对象
类定义了一组概念的模型,而对象是真正的实体。关系如下:
1、由对象归纳类,是归纳对象共性的过程。
2、在类的基础上,将状态和行为实体化为对象的过程称为实例化。
3、只写属性:只包含set访问器。
4、只读属性:只包含get访问器。
5、读写属性:同时包含get和set访问器。
6.封装
1、保证数据的安全性
2、提供清晰的对接口
3、类内部实现可以任意修改,不影响其他类
第二章 深入C#数据类型
1.概述
1.值类型:值类型源于System.VauleType,值类型主要包括数据类型(如int,double,float)和枚举类型。
2引用类型:引用类型源于System.Object家族,在C#中引用类型主要包括数组、类和接口。
2.结构
1.结构的定义:
访问修饰符 struct 结构名
{
//结构体
}
结构可以有方法也可以有字段
定义时,结构中的字段不能被赋初始值
2.结构的使用
1.可以不用new,直接定义结构的对象
2.声明结构的对象后,必须给结构的成员赋初始值
3.装箱和拆箱
拆箱:拆箱是引用类型转化为基本类型
装箱:装箱是基本类型转化为引用类型
4.不同类型参数传值
使用值传递,在方法中对参数值的更改在调用后不保留。
使用ref方式传递,可以保留对参数值的更改。
5.值方式参数传递
在值方式传递参数时,参数可以是引用类型,也可以是值类型。
1.使用引用类型作为参数
2.使用值类型作为参数
6.引用方式参数传值
在引用方式传递参数时,参数可以是引用类型,也可以是值类型。
1.使用引用类型作为参数
2.使用值类型作为参数
第三章 使用集合组织相关数据
1.ArrayList
ArrayList非常类似于数组,也有人称它为数组列表,ArrayList可以动态维护。ArrayList类属于System.Coolections命名空间,使用它使一定要导入命名空间。
ArrayList常用的方法和属性:
| 属性名称 | 说明 |
|---|---|
| Count | 获取ArrayList中实际包含的元素数 |
| 返回值 | 方法名称 | 说明 |
|---|---|---|
| int | Add(Object value) | 将对象添加到ArrayList的结尾处 |
| void | Remove(int index) | 移除ArrayList指定索引处的元素 |
| void | RemoveAt(Object vaule) | 从ArrayList中移除特定元素 |
| void | Clear() | 从ArrayList中移除所有元素 |
2.Hashtable
Hashtable的数据结构统称为哈希表,也有人称它为“字典”,Hashtable的数据时通过键(Key)和值(Value)来组织的。Hashtable属于System.Coolections命名空间,它的每一个元素都是键\值对。
Hashtable常用的属性和方法:
| 属性名称 | 说明 |
|---|---|
| Count | 获取包含在Hashtable中的键/值对的数目 |
| Keys | 获取包含在Hashtable中键的集合 |
| Values | 获取包含在Hashtable中值的集合 |
| 返回值类型 | 方法名称 | 说明 |
|---|---|---|
| void | Add(Object key,Object values) | 将带有指定键和值的元素添加到Hashtable中 |
| void | Remove(Object key) | 从Hashtable移除带有特定键的元素 |
| void | Clear() | 从Hashtable中移除所有元素 |
3.泛型
泛型是C#2.0中的一个新特性。通过泛型可以最大限度地重用代码,保护类型的安全和提高性能。泛型集合可以约束它所储存的对象类型,List和Dictionary<K,V>访问元素无需进行类型转换。
4.泛型集合List
语法:
List<T> 对象名 = new List<T>();
""中的T表明集合中管理的元素类型,对集合元素类型进行约束。
泛型List与非泛型ArrayList的区别:
| 异同点 | List | ArrayList |
|---|---|---|
| 不同点 | 对所保存元素进行类型约束。添加/读取值类型元素无需拆箱和装箱。 | 可以增加任何类型。添加/读取值类型元素需拆箱和装箱。 |
| 相同点 | 通过索引访问集合的元素。添加元素方法相同。 | 删除元素方法相同。 |
5.泛型集合Dictionary<K,V>
泛型集合Dictionary<K,V>它具有泛型的全部特征,编译时检查类型约束,获取元素无需进行类型转换,存储方式和Hashtable相似。
语法:
Dictionary<K,V> 对象名 = new Dictionary<K,V>();
<K,V>中K表示集合中Key的类型,V表示Value的类型
null不能作为key,编译的报错,运行的时候
泛型Dictionary<K,V>与非泛型Hashtable的区别:
| 异同点 | Dictionary<K,V> | Hashtable |
|---|---|---|
| 不同点 | 对所保存元素进行类型约束。添加/读取值类型元素无需拆箱和装箱。 | 可以增加任何类型。添加/读取值类型元素需拆箱和装箱。 |
| 相同点 | 通过Key获取Values。添加元素方法相同。 | 删除元素方法相同。b遍历方法相同。 |
6.泛型类
语法:
public class 类名<T>
{
//.........
}
T是类型参数,代表具体的数据类型,可以是类参数,也可以是基本数据类型
第四章 深入类的方法
1.构造函数
语法:
访问修饰符 类名()
{
//方法体
}
方法名与类名相同
没有返回值类型
主要完成对象的初始化工作
2.带参构造函数
语法:
访问修饰符 类名(参数列表)
{
//方法体
}
3.显示方式:
隐式:隐藏的无参
1、就是创建一个类,没有手写构造函数的时候当前类自带的构造函数
2、就是无参的构造函数
显示:自定义构造
就是自定义构造函数
参数的格式:
有参:类名()括号里有参数
无参:类名()括号里没有参数
4.构造函数特点
方法名相同
方法参数类型不同或者参数个数不同
在同一个类中
第六章 初始继承和多态
1.什么是继承
1.移除类的沉余代码
2.继承的概念
大致的来说就是子承父,也就是说一个类可以继承另一个类,被继承的类称为父类(基类),继承其他的类称为子类(派生类)。继承是面向对象编程中的一个非常重要的特征。
2.base关键字和protectde修饰符
base关键字:它表示父类,可以访问父类的成员。例如父类的属性、方法。
protected修饰符:protected修饰符这个访问修饰符修饰的成员允许被子类访问,而不允许其他非子类访问。
3.子类构造函数
1.隐式构造函数:由于没有指明调用父类的哪一个构造函数时,所以系统会隐式地调用父类的无参构造函数。
2.显示构造函数:在C#中只要在子类的构造函数后添加“:base(参数列表)”,就可以知道该子类的构造函数调用父类的哪个构造函数。
4.继承的特性
1.继承的传递性
2.继承的单根性
5.继承的价值
继承模拟了现实世界的关系,OOP中强调一切皆对象,符合面向对象的编程思想。
继承实现了代码的重用,合理的使用基础,使代码更加简洁。
继承使得程序结构更加清晰,子类和父类的层次结果更加清晰。
6.多态
语法:
访问修饰符 virtual 返回值类型 方法名()
{
//方法体
}
访问修饰符 override 返回值类型 方法名()
{
//方法体
}
一种事物的多种形态。
7.重写特点
1.不同的类。
2.被重写的方法,方法名+参数必须和父类一模一样。
3.被子类重写的方法,在父类中必须明确标注出,当前方法可以被子类重写。
4.如果子类当前方法是在重写父类的方法,那么必须用overrirde标注。
第七章 深入理解多态
1.里氏替换概述
1.里氏替换原则的应用:里氏替换原则是软件应该遵守的重要原则之一。
2.is和as操作符的使用:is操作符用于检查对象和指定的类型是否兼容。as操作符主要用于两个对象之前的类型转换。
2.什么是抽象类和抽象方法
抽象方法是一个没有实现的方法,通过在定义方法是增加abstract关键字来声明抽象方法。
语法:
访问修饰符 abstract 返回值类型 方法名();
抽象类语法:
访问修饰符 abstract class 类名{}
含有抽象方法的类就是抽象类。
3.抽象类和抽象方法的应用
如何实现抽象方法:
与子类重写父类的虚方法一样,在子类中使用override关键字重写抽象方法。
语法:
访问修饰符 override 返回类型 方法名();
4.虚方法和抽象方法的区别
| 虚方法 | 抽象方法 |
|---|---|
| 用virtual修饰 | 用abstract修饰 |
| 要有方法体,即使是一个分号 | 不允许有方法体 |
| 可以被子类override | 必须被子类override |
| 除了密封类外都可以定义 | 只能在抽象类中定义 |
5.面向对象的三大特征
1.封装:保证对象自身数据的完整性和安全性。
2.继承: 建立类之间的关系,实现代码的复用,方便系统的扩展。
3.多态: 相同的方法调用可实现不同的实现方式。
本文深入解析了.NET框架的结构与特性,包括CLR、FCL等核心组件,以及C#的数据类型、封装、继承和多态等面向对象编程特性。详细介绍了集合类如ArrayList、Hashtable、List<T>和Dictionary<K,V>的使用方法。

2043

被折叠的 条评论
为什么被折叠?



