前提:
因为学习这本书的话,花了一个多月的时间,然后这篇文章的话,主要分享每一章所讲的知识点,做一个整合。
第一章 深入.Net框架
一、.Net框架
1.两个主要框架(组件)
(1).公共语言运行时(CLR,Common Language Runtime)
CLS(Common Type Sysrem , 公共语言规范)
CTS(Common Language Specifiation, 通用类型系统)
(2).框架类库(FCL)
问:
简述.NET框架体系结构的组成
答: .NET框架主要由两大组件构成,分别是公共语言运行时(CLR),框架类库(FCL)。
问:
简述CLR的主要用途
答:CLR是所有.NET应用程序运行时环境,是.NET程序都要应用的编程基础,并且可以托管代码。
第二章 深入C#数据类型
一、值类型和引用类型
值类型:不同的变量会分配不同的存储空间,并且存储空间中存储的是该变量的值;
赋值操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。
引用类型:赋值是把原对象的引用传递给另一个引用;
对数组而言,当一个数组引用赋值给另一个数组引用后,这两个引用指向同一个数组,也就是指向同一块存储空间。
细分值类型和引用类型:
值类型:基本数据类型(int,long,float,double,char,bool)、枚举类型(enum)、结构类型(struct)
引用类型:类(System、Object、string、class)、接口(interface)、数组(int[]、string[]、类名[])
二、结构
1.定义语法:
访问修饰符 struct 结构名{
//结构体(字段、属性、方法)
}
特点:
结构中可以有字段,也可以有方法;定义时,结构中的字段不能赋初始值.
2.结构的使用:
可以不用new,直接定义结构的对象;声明结构的对象后,必须给结构的成员赋初始值.
三、装箱和拆箱
装箱:值类型转引用类型(小类型转大类型)
拆箱:引用类型转值类型(大类型转小类型)
Object o = 123;
int j = (int) o ; //需要强转
四、不同类型的参数传递
1.值类型参数传递(不用ref修饰)
(1).使用引用类型作为参数.
引用类型被修改,类成员的值也会被修改.
(2).使用值类型作为参数.
不能改变值类型参数的值.
2.引用方式参数传递(用ref修饰)
(1).使用引用类型作为参数
(2).使用值类型作为参数
用ref方式传递的两种参数形式没有区别,类成员的值也会被修改.
问:
简述值类型和引用类型的主要区别:
答: (1).数据类型不同.值类型(int,bool,enum....) 引用类型(类、string.....)
(2).数据保存方式不同.值类型会开辟新空间,引用类型会指向同一个地址
问:
简述类和结构的区别:
答: (1).值类型是结构,而引用类型是类
(2).结构必须声明构造函数,但它们必须带参数
(3).使用的方式不同,结构无需new,类需new
第三章.使用集合组织相关数据
一、集合
1.ArrayList 动态数组列表
实现步骤:
(1).引入System.Collections 命名空间
(2).实例化 ArrayList 对象
ArrayList array = new ArrayList();
1.1常用方法及属性
属性: Count:获取ArrayList中实际包含的元素数
方法: 返回值类型 方法名称 说明
int Add(Object Value) 添加元素到ArrayList的末尾
void Remove(Object Value) 删除ArrayList中指定元素
void RemoveAt(int index) 删除ArrayList中指定索引处
void Clear() 删除ArrayList中所有元素
1.2集合初始化器
由一系列的元素初始化器构成,可以减少代码量
注意:ArrayList的索引会自动分配和调整
Remove()方法,一次只能删除一个元素,与其完全相同的元素不会影响
2.HashTable
哈希表(字典),以键(Key)值(Value)对的方法存储数据.
2.1常用属性及方法
属性:
Count:获取HashTable中实际包含的元素数.
Keys:获取HashTable中键的集合.
Values:获取HashTable中值的集合.
方法: 返回值类型 方法名称 说明
void Add(Object Key,Object Value) 将带有指定键和值的元素添加到HashTable中
void RemoveAt(Object Key) 删除HashTable中指定Key的元素
void Clear() 删除HashTable中所有元素
2.2遍历HashTable中的元素:(只能用foreach)
(1).遍历Key //获得集中键的集合. (2).遍历Value的集合
foreach(Obejct key in stus.keys) { foreach(Obejct ins in stus.Value){
//int i = (int) key; //student s = (student)ins;
Console.WriteLine(key); s.show();
} }
(3).获取Key和Vulue的集合.
foreach(DictionayrEntry entry in stus){
Console.WriteLine(entry.Key);
Student s = (Student)entry.Value;
s.show();
}
二、泛型和泛型集合
泛型:类型参数<T>,约束数据类型,减少强制类型转换或装箱操作.
Using System.Collections.Generic; //导包
1.泛型集合:
(1).List<T> 语法: List<T> 对象名 = new List<T>(); .对象名.Add(对象);
(2).Dictionary<K,V> 语法:Dictionary <K,V> 对象名 = new Dictionary<K,V>();
遍历方式:
(1).遍历Key
(2).遍历Value
(3).遍历(Key)和值(Value).
foreach(KcyValuePair<string,Student> cntry in LstStu){
}
2.泛型类
语法:
public class 类名 <T>{
}