一、错误异常处理
- C# 中的异常处理基于四个关键字构建,分别是 try、catch、finally 和 throw:
try:try 语句块中通常用来存放容易出现异常的代码,其后面紧跟一个或多个 catch 语句块;
catch:catch 语句块用来捕获 try 语句块中的出现的异常;
finally:finally 语句块用于执行特定的语句,不管异常是否被抛出都会执行;
throw:throw 用来抛出一个异常。
- 2. 异常类
-
异常类 描述 System.IO.IOException 处理 I/O 错误 System.IndexOutOfRangeException 处理当方法引用超出范围的数组索引时产生的错误 System.ArrayTypeMismatchException 处理当数组类型不匹配时产生的错误 System.NullReferenceException 处理引用一个空对象时产生的错误 System.DivideByZeroException 处理当除以零时产生的错误 System.InvalidCastException 处理在类型转换期间产生的错误 System.OutOfMemoryException 处理空闲内存不足产生的错误 System.StackOverflowException 处理栈溢出产生的错误
-
二、List类
| 属性、方法 | 含义 |
| Capacity | 获取容量大小 |
| Add() | 添加元素 |
| Insert() | 插入元素 |
| [index] | 访问元素 |
| Count | 访问元素个数 |
| RemoveAt() | 移除指定位置的元素 |
| IndexOf() | 取得一个元素所在列表中的索引位置(从前往后搜索),没找到就返回-1 |
| LastIndexOf() | 从后往前搜索,搜索到满足条件的就停止,没找到就返回-1 |
| Sort() | 对列表中的元素进行从小到大的排序 |
| Reverse() | 将元素的顺序反转 |
| Clear | 移除所有元素 |
三、面向对象
四项基本原则:
抽象:将实体的相关特性和交互性建模为类,以定义系统的抽象表示
封装:隐藏对象的内部状态和功能,并允许通过一组公共函数进行访问
继承:根据现有抽象创建新抽象的能力
多态性:跨多个抽象以不同方式实现继承属性或方法的能力
四、类
类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。
五、访问修饰符
public:公有访问,不受任何限制
private:私有访问,只限于本类成员访问,子类、实例都不能访问
protected:保护访问,只限于本类和子类访问,实例不能访问
internal:内部访问,只限于本项目内访问,其他不能访问
protected internal:内部保护访问,只限于本项目或者子类访问,其他不能访问
六、内存
内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区
八、静态类
主要特性:
1:仅包含静态成员。
2:无法实例化。
3:是密封的。
4:不能包含实例构造函数。
九、接口interface
接口使用 interface 关键字声明,它与类的声明类似。接口声明默认是 public 的
声明接口:
interface IMyInterface
{
void MethodToImplement();
}
十、索引器
索引器允许一个对象可以像数组一样使用下标的方式来访问
语法:
element-type this[int index]
{
// get 访问器
get
{
// 返回 index 指定的值
}
// set 访问器
set
{
// 设置 index 指定的值
}
}
十一、运算符重载
运算符重载允许为运算指定用户定义的运算符实现,其中一个或两个操作数是用户定义的类或结构类型。用户定义的运算符实现的优先级总是高于预定义运算符实现:仅当没有适用的用户定义运算符实现时才会考虑预定义运算符实现。
| 运算符 | 描述 |
| +, -, !, ~, ++, -- | 这些一元运算符只有一个操作数,且可以被重载。 |
| +, -, *, /, % | 这些二元运算符带有两个操作数,且可以被重载。 |
| ==, !=, <, >, <=, >= | 这些比较运算符可以被重载。 |
| &&, || | 这些条件逻辑运算符不能被直接重载。 |
| +=, -=, *=, /=, %= | 这些赋值运算符不能被重载。 |
| =, ., ?:, ->, new, is, sizeof, typeof | 这些运算符不能被重载。 |
十二、结构体和类
区别:
- 结构体是值类型,类是引用类型
- 结构体存在栈中,类存在堆中
- 结构体成员不能使用protected访问修饰符,而类可以
- 结构体成员变量申明不能指定初始值,而类可以
- 结构体不能申明无参的构造函数,而类可以
- 结构体申明有参构造函数后,无参构造不会被顶掉
- 结构体不能申明析构函数,而类可以
- 结构体不能被继承,而类可以
- 结构体需要在构造函数中初始化所有成员变量,而类随意
- 结构体不能被静态static修饰(不存在静态结构体),而类可以



