深入. NET框架
.NET框架体系结构
.NET框架结构
.NET框架运行在操作系统之上,是.NER最基础的框架。它提供了创建、.NET应用的环境,主要包含公共语言运行时(CRL)和框架类库(.NET Framework 类库,FCL),并且支持多种开发语言。
System:此命名空间包含所有其他空间的命名。在 System命名空间中包含了定义.NET中使用的公共类型。
System.Collections.Generic:支持泛型操作。
System.IO:支持对文件的操作,如复制,粘贴,删除及对文件的读写等。
System.Net:支持对网络协议的编程
System.Data:提供对表示ADO.NET结构的类的访问。
System.Windows.Forme:用于开发Windows应用程序。引用这个命名空间才能使用WinForms的控件和各种特性。
System.Drawing:支持GDI+基本图形操作。
类和对象
类和对象有着本质的区别,类定义了一组概念的模型,而对象是真实的实体,他们之间的关系有:
由对象归纳为类,是归纳对象的共性的过程。
在类的基础上,将状态和行为实体化为对象的过程称为实例化。
对于类的属性,我们通过get和set访问器进行访问和设置,用来保障类中数据的安全。属性访问器分别为以下三种。
只读属性:只包含get访问器 。
只写属性:只包含set访问器。
读写属性:同时包含set访问器和get访问器。
封装
保证数据的安全性
提供清晰的对外接口。
类内部实现可以任意修改,不影响其他类。
将字段封装为期属性是封装的一种方式,类的私有方法也是一种封装。
深入C#数据类型
值类型和引用类型
C#常用数据类型
常用数据类型 | Java | C# | 举例 |
---|---|---|---|
整形 | int | int | 年龄 |
浮点型 | float | float | 成绩 |
双精度型 | double | double | 圆周率 |
字符串 | String | string | 家庭住址 |
布尔型 | boolean | bool | 是否为少数民族 |
枚举类型 | enum | enum | 颜色 |
1.值类型
值类型源于System.ValueType家族,每个值类型的对象都有一个独立的内存区域用于保存自己的值,这个值类型数据所在的内存区域称为栈。只要在代码中修改它,就会在它的内存区域内保存这个值。值类型只要包括基本数据类型(如int、float、double)和枚举类型等。
2.引用类型
引用类型源于System.Object家族,在C#中引用类型主要包括数组,类和接口。
结构
1.结构的定义
语法
访问修饰符 struct 结构名
{
//结构体
}
结构的定义有以下特点、
结构中可以有字段,也可以有方法。
定义是,结构中的字段不能被赋初值。
2.结构的使用
结构的构成和类相似。在使用结构时,要注意以下几个方面。
可以不用new,直接定义结构对象即可。
声明结构的对象后,必须给结构的成员赋初值。
不同类型的参数传递
概述
使用值传递,在方法中对参数值的更改在调用后不能保留。
使用ref方式传递,可以保留对参数值的更改。
值方式参数传递
在值方式参数传递时,参数可以是引用类型,也可以是值类型。
引用方式参数传递
在引用方式参数传递时,参数同样可以是引用类型,也可以是值类型。
小结
使用值方式(不用ref修饰)传递值类型参数是,参数在方法中的修改不会保留。
使用值方式(不用ref修饰)传递引用类型参数时,参数在方法中的修改会保留。
使用引用方式(用ref修饰)传递值类型或引用类型参数时,参数在方法中的修改都会保留。
使用集合组织相关数据
ArrayList
ArrayList非常类似于数组,也被称为数组列表,ArrayList可以动态维护,数组的容量是固定的,而ArrayList的容量可以根据需要自动扩充,它的索引会根据程序的扩展而重新进行分配和调用。ArrayList提供了一系列方法对其中的元素进行访问,增加和删除操作。
提示
和数组类似,ArrayList中存储的数据称为元素;ArrayList可以保存的元素就是ArrayList的容量,其默容量为0,可以通过索引访问ArrayList中的元素,索引从0开始。
ArrayList类属于System.Collctions命名空间,这个命名空间包含接口和类,这些接口和类定义各种对象(如列表,队列,位数组,哈希表和字典)的集合。ArrayList就属于集合的一种,因此,在使用ArrayList类之前一定要引入System.Collections命名空间。
1.给ArrayList添加数据
ArrayList通过Add()方法添加元素
返回值:值是一个int整型,用于返回所添加的元素的索引。
参数:如果向ArrayList中添加的元素是值类型,这些元素就会装箱处理转换为Object引用类型,然后进行保存。因此,ArrayList中的所有元素都是对象的引用。
2.存取ArrayList中的单个元素
ArrayList获取一个元素的方法和数组是一样的,也是通过索引(index)来访问,ArrayList中第一个元素的所引是0.需要注意的是,由于给ArrayList添加的元素都会被转换为Object型,所以在访问这些元素的时候必须把它们全部转换为它们原来的数据类型。
3.遍历ArrayList中的元素
可以通过循环的方法将元素逐个取出,这种操作方法通常称为遍历元素,以数组的长度作为循环次数,将循环变量作为数组的索引,逐个取出元素例如:
static void Main(string[] args)
{
int[] array = new int[]{0,1,2,3,4};
for(int=0;int<array.Length;I++)
{
Console.WritreLine(array[i])
}
}
Hashtable
在ArrayList集合中我们使用索引来访问它的元素,但使用这种方式必须了解集合中的某个数据的位置,当ArrayList中的元素频繁时,要跟踪某个元素变的困难了。C#提供了一种称为Hashtable的数据结构,通常称为哈希表,也被称之为字典,因为类似于现实生活的字典。
Hashtable也属于System.Collections命名空间,它的每个元素都是一个键/值对。
1.Hashtable通过Add()方法添加元素
Hashtable的Add()方法有两个参数,一个表示键,一个表示键所对应的值。
2.获取Hashtable的元素
和ArrayList不同,访问Hashtable元素时可以直过键名来获取具体值。同样,由于值的类型是Object,所以当得到一个值时也需要通过类型转换得到指定类型的对象。
3.遍历Hashtable中的元素
如下
//遍历Key
foreach(Object obj in se.Keys)
{
Console.WriteLine((string)obj);
}
//遍历Value
foreach(Object obj in se.Values)
{
Console.WriteLine(obj);
}
泛型和泛型的集合
泛型
泛型是C#2.0中的一个新特性。泛型引入了一个概念:类型参数。通过类型参数(T)减少了运行时强制转换或装箱操作的风险,通过泛型可以最大限度地重用代码,保护类型的安全性提高性能,它减少最常见应用就是出创建集合类,可以约束集合类中的元素类型。比较经典的泛型集合是List和Dictionary<K,V>。
泛型集合List
在System.Collections.Generic命名空间定义了许多泛型集合类,这些类可以代替我们前面学习的ArrayList和Hashtable。
定义一个List泛型集合的方法如下
语法
List 对象名= new List();
泛型集合Dictionary<K,V>
在C#中还有一种泛型集合Dictionary<K,V>,它具有泛型的全部特性,编译时检查类型约束获取元素时无须类型转换,并且它存储数据的方式和Hashtable类似,也是通过Key/Value(键/值)对元素保存的。
语法
Dictionary<K,V> 对象名= new Dictionary<K,V>();
深入类的方法
构造函数
1.构造函数
方法名于类名相同
没有返回值类型
主要完成对象的初始化工作
2.无参构造函数
在默认的情况下,系统将会分配一个无参构造函数,并且没有方法体。我们也可以自定义一个无参构造函数,在无参构造函数的方法体中对类的属性进行赋值。无参构造函数的语法如下:
语法
访问修饰符 类名()
{
//方法体
}
3.带参构造函数
语法
访问修饰符 类名(参数列表)
{
//方法体
}
4.隐式构造函数
在没有手写构造函数时,系统给的一个无参的构造函数