C#基础
1.“==” 和 equles()的区别
值类型:==和equles 都是判断值是否相等。
引用类型 ==和equles 都是判断引用地址是否相等。
string 类型特殊。== 最终 会走 equles 首先判断地址是否先等,不相等则判断值是否相等。
2.潜复制和深复制
潜复制:值类型是值复制。引用类型是地址复制。
深复制:值类型是值复制。引用类型是遍历元素进行值复制,如果元素是引用类型,就递归调用。
3.类和结构体的区别
类是引用类型。结构体是值类型。
类可以继承,被继承,结构体不可以继承和被继承
但是类和结构体都可以实现接口。
4.接口和抽象类的区别
接口和抽象类的语法基本相同,都不可以实例化。
但是1.接口中不可以有方法的实现,但是抽象类中可以有实现。
抽象类只能被单继承,接口可以被多继承。
5.派生类的构造函数和基类构造函数的运行。
先运行基类构造函数,再运行派生类构造函数。
6.static ,readonly,const。
static 是静态变量。需要开辟内存空间。存储在静态变量区(堆上),在任何地方,都是对同一个内存进行操作。
readonly 是只读变量。需要开辟内存空间。除了变量初始化,或构造函数中,整个程序运行过程不允许修改。
const常量。不需要开辟内存空间。类似于占位符。