总结
- C#和.NET的关系
C#是一门开发语言,.NET是开发平台,C#利用.NET提供的类库进行开发 - 公共语言运行时(库)CLR
- 各种语言通过公共类型系统CTS→中间语言MSIL (语言无关性,共用一个开发平台)
- 垃圾回收机制GS,垃圾回收器是通过自主的算法自主执行垃圾回收,垃圾回收器在执行垃圾回收时,会遍历数据区域找到没有被任何指针所指向的数据区域(指向null),将其释放
- 即时编译器(just in time),编译中间语言。逐行讲中间语言编译为机器语言,jit 将中间语言编译为不同的机器语言,实现平台无关性
- 编译器 即时编译器 垃圾回收器
- 在同一个命名空间下就同属一个程序集。,命名空间对不同的类进行区分管理
- 类型
byte 8位无符号整数,sbyte 8位有符号整数
ushort 16位无符号整数,short 16有符号整数
uint 32位无符号整数,int 32位有符号整数
ulong 64位无符号整数,long 64位有符号整数 - 枚举 enum 取枚举项的数值:(int)enum,转换为枚举类型:enum.prase()
- 注释
单行注释、多行注释、文档注释 - 对象的三大特点
封装、继承、多态 - 三大类型: 类类型、值类型与引用类型
值类型(int,struct,枚举,除string外简单类型)
引用类型(string,类,数组,自定义类型,委托)
区别 :值类型在栈上引用类型在堆上;每一个值类型对应一个数据区域,多个引用类型可能对应一个数据区域 - out参数与ref参数
ref和out (将值类型当做引用类型在方法体传递)
ref在方法外部初始化(赋值),out在方法体内部初始化(赋值) - 扩展方法
扩展方法:在不改变原有类定义的方法情况下,对类的方法进行扩展,避免了因版本的变化引起早期开发代码的不兼容问题
1.扩展方法必须放在静态类中
2.扩展方法必须为静态方法
3.扩展方法传入参数必须使用this关键字修饰,后跟要扩展的类和扩展方法名) - 继承
一个子类不能继承多个父类但可实现多个接口(定义一系列行为,只能定义不能实现方法) - 访问修饰符
public 公有访问,不受任何限制
private 私有访问,只限于本类成员访问,子类、实例都不能访问
protected 保护访问,只限于本类和子类访问,实例不能访问
internal 内部访问,只限于本项目内访问,其他不能访问
protected internal 内部保护访问,只限于本项目或是子类访问,其他不能访问 - 泛型
泛型方法 泛型约束 泛型类 - 委托与事件
委托描述了一类方法签名相同的方法
事件对委托的封装 - 观察者模式
基于事件与委托的模式 - 匿名方法和Lambda表达式
- string 字符串操作
- 集合(list,字典)
- 错误
- 构造函数与析构函数(gc)