C#的深入
一、深入.Net框架
1、.Net框架的结构
主要包含CLR和FCL两个组件。
1.1、CLR:公共语言运行时
包括CTS和CLSl两个组成部分。
1、CTS:通用类型系统
作用:用于解决不同语言数据类型不同的问题
2、CLS:公共语言规范
作用:限制了由这些不同点引发的互操作性问题。
1.2、FCL:框架类库
作用:用来提供命名空间。
2、类和对象
1、三大特性
封装:将一些类的内部构造私有化
继承:子承父
多态:一种事物的多种形态
2、类的成员
1、字段:为private的
2、属性:为public
有三种属性:只写属性、只读属性、读写属性
自动生成属性的快捷键:prop关键字+table+table
3、方法
语法:访问修饰符 返回值类型 方法名(){ }
3、类图
+:表示公有成员
-:表示私有成员
特点:类型和返回值类型在冒号后面
二、深入C#数据类型
1、常用的数据类型
int | 整型 |
---|---|
float | 单精度浮点 |
double | 双精度浮点 |
string | 字符串 |
bool | 布尔 |
enum | 枚举 |
2、值类型
1、包括:int、float、double和枚举等
2、命名空间为:System.ValueType
3、引用类型
1、包括:数组、类、集合和接口等
2、命名空间为:System.Object
4、结构
1、关键字:struct
2、语法:
访问修饰符 struct 结构名
{
//结构体
}
3、结构的使用
可以不用new,直接定义结构的对象即可。
声明结构的对象后,必须给结构的成员赋初值。
4、结构的特点:
1、字段不能赋初始值
2、不能手写无参构造函数
3、结构里面有多少个字段,定义构造函数就必须有多少个参数
4、使用:可以new、也可以不用new
结构在使用的时候要给所有的字段赋值
5、装箱和拆箱
1、装箱
概念:将值类型转换为引用数据类型
static void Main(string[] args)
{
int i = 123;
object o = i; //装箱
}
2、拆箱
概念:将引用转换为值类型
static void Main(string[] args)
{
object o = 112;
itn j = o; //拆箱
}
6、参数的传递
1、值方式参数传递
1、参数可以是引用数据类型,也可以是指类型。
2、特点:当参数是值类型时,形参的改变不会影响实参,而当参数是引用数据类型时,形参的改变会影响实 参(string除外)。
2、引用方式参数传递
1、参数可以是引用数据类型,也可以是指类型。
2、使用ref关键字
3、特点:形参的改变都会影响实参。
三、使用集合组织相关数据
1、ArrayList集合
1、ArrayList常用的属性:Count(获取ArrayList中实际包含的元素数)
2、ArrayList常用的方法:
方法名称 | 含义 |
---|---|
Add(Object value) | 添加对象 |
RemoveAt(int index) | 移除ArrayList指定下标的元素 |
Remove(Object value) | 移除指定的对象 |
Clear() | 清空元素 |
3、ArrayList的语法:
ArrayList 对象名 = new ArrayList();
4、arrayList的遍历
static void Main(string[] args)
{
ArrayList 对象名 = new ArrayList();
foreach(Object obj in 对象名) //foreach循环遍历
{
Console.WriteLine(obj);
}
}
2、List集合
1、List的语法:
List 对象名 = new List();
2、List和ArrayList的区别
List:属于泛型集合,会约束元素的数据类型,取值的时候不需要进行类型的转换
ArrayList:属于非泛型集合,不会约束元素的数据类型,取值的时候需要进行类型的转换。
3、List的属性和方法
与ArrayList 使用一样的属性和方法
4、List的遍历
foreach(SE se in engineers)
{
MessageBox.Show(se); //无需进行类型转换
}
3、Hashtable集合
1、Hashtable的语法
Hashtable 对象名 = new Hashtable();
2、常用的属性
属性名称 | 说明 |
---|---|
Count | 获取元素的数目 |
Keys | 获得键的集合 |
Values | 获取值的集合 |
3、常用的方法
方法名称 | 说明 |
---|---|
Add | 添加元素 |
Remove | 移除特定的元素 |
Clear | 清空所有元素 |
4、遍历
foreach(Object obj in engineers.Keys)
{
Console.WriteLine((string)obj);
}
4、Dictionary集合
1、语法
Dictionary<K,V> 对象名 = new Dictionary<K,V>();
2、常用的属性
与Hashtable相同,Count、Keys、Values
3、常用的方法
与Hashtable相同,Add()、Remove()、Clear()
4、遍历
foreach(SE se in engineers.Values)
{
MessageBox.Show(se.SayHi());
}
5、泛型类和非泛型类
1、泛型类:在类名上有数据类型。
2、非泛型类:class类
6、泛型集合和非泛型集合的区别
1、泛型集合:约束数据类型,不需要进行类型的转换。
2、非泛型集合:不约束数据类型,读取时需要类型转换。
四、深入类的方法
1、构造函数
1.1、构造函数的语法
访问修饰符 类名(参数列表){//方法体}
1.2、构造函数的分类
1、无参构造函数
2、有参构造函数
3、隐式构造函数
当没有自定义构造函数的时候,会有一个系统隐藏的构造函数
1.3、构造函数的作用
用来new对象,还可以给成员变量赋值
2、重载
2.1、重载的分类
1、构造函数的重载
2、方法的重载
2.2、重载的特点
1、在同一个类中
2、相同的方法名
3、参数不同:个数不同、对应的参数下标的参数类型不相同
2.3、重载的调用规则
根据参数[个数+类型]调用
2.4、重载的注意事项
1、不能以返回值类型的不同来决定重载
2、不能以访问修饰符的不同来决定重载
3、对象交互
概念:每个对象之间都有着传递信息的功能