1.C#支持哪几个预定义的值类型?
值类型:简单类型(整型、布尔型、字符型、浮点型、小数型)
结构类型
枚举类型
(byte、bool、 int、float、double、struct、enum)
2.C#支持哪几个预定义的引用类型?
引用类型是实际值引用(指针)的数据类型,如果变量是一个引用类型,那么将指向原始内存地址
引用类型:对象类型
类类型
接口
元数据
字符串类型
数组
(object、class、string、数组,接口)
-------------------------扩展------------------------------------
由于值类型或者引用类型直接或者间接的继承自Object,因此可以相互进行转换
-------------------------------------------------------------
3.如何解决装箱和拆箱的性能问题
装箱:指将值类型转化为引用类型
拆箱:指将引用类型转化为值类型
*可以用使用泛型的方式来减少装箱与拆箱(以下是检测装箱拆箱的效率问题可以用arrayList和List读取数据来检测)
----------------------------扩展----------------------------------
(1)上面这种叫做属性,属性也是方法,上面的写法叫做语法糖(语法的简化)
(2)大写I开头基本都是接口
(3)构造函数的作用就是初始化一个类的实例
*(4)检测装箱拆箱的效率问题可以用arrayList和List读取数据来检测
https://blog.csdn.net/weixin_30872157/article/details/98135673
(5)基础数据类型的范围
--------------------------------------------------------------------
4.值类型和引用类型的区别(有几种方法可以判断)
(1)赋值区别
值类型是进行数据的赋值,会创建一个新的对象
引用类型只是拷贝了引用,实际指向统一内存地址的数据
(2)继承结构的区别
引用类型一般都有继承性
值类型由于其是密封的(sealed)以至于值类型不能作为任何类型的基类。但是可以单继承或者多继承接口(值类型都继承system.valueType)
(3)内存分配不同
值类型一般分配到栈上,变量直接包含变量的实例,使用效率相对较高
引用类型分配在堆上,变量存的是指向实例的一个指针,变量通过指针来指引(栈上只会存指向的内存地址)
5.类的get和set函数
作用:对于一些私有变量,为了不被其他类引用,通过get,set函数可以保证他的封闭性和安全性,通过函数
6.类的的构造函数和析构函数
构造函数:对象被创建的时候用特殊的值对其进行构造,使对象处于一个特定的状态,从抽象的类变成具体的对象(一般到具体,由系统自动调用)
析构函数:对象生命周期结束时由系统自动调用,对象销毁,内存空间释放
继承类的执行顺序:
先执行基类的构造函数,再执行子类的构造函数
先执行子类的析构函数,再执行父类的析构函数
---------------------------------------------------------
.netCore和.netFramework如果自己重写了析构函数,一个会打印一个不会打印
---------------------------------------------------------
7.静态成员和静态函数
static 标志
静态成员和静态函数为类共享而不是为对象所独有(数据共享、只初始化一次,占一份内存),通过(类名.)的形式可进行操作
8.类继承的相关理解
在派生类的构造函数写继承基类的构造函数
在派生类中new 父类中的·方法,那么当实例化派生类的时候调用此方法相当于调用派生类的这个方法
9.接口的理解
(1)接口之间可以继承,(子接口继承自父接口,不用实现父接口)在实现接口的时候需要对父子接口里面的方法都进行实现。
(2)当某个函数实现多个接口时,若多个接口中有同名方法,那么在实现的时候系统会默认类中这一个函数是实现两个接口中的方法签名(专业术语:就是接口中声明的方法)。
(3)接口妙用()
利用父类范围大于子类,可以这样写,可维护性
10.预处理器命令
指导编辑器在编译开始之前对信息进行预处理