2025.10.18 复习

  1. 今天主要是看C#相关的知识点。

1.1 ArrayList和List的区别,说实话之前是不知道还有ArrayList的。ArrayList是在C#泛型还没有出现之前主要使用的集合类型,其实现与IList接口,因为其会将所有的元素都看成是Object,所以会涉及到拆箱和装箱,在实例化的时候需要声明出实际的类型。ArrayList会导致数据类型的缺失,而List就不会出现这个问题,List底层实现于泛型数组。性能要比ArrayList要高。现在绝大多数情况下都会去使用List,List也是实现于IList接口。

1.2 垃圾回收机制出现的原因主要是为了避免内存的溢出。主要可以通过减少new的次数,使用公用对象,在对于字符串进行修改操作时,使用stringBuilder。虽然说现在string的+=操作处理的时候可以看出和stringBuilder差不多,但是这种优化只能适用于一些情况,很多情况下还是没有优化到的。

1.3 interface和抽象类的不同

interface是完全抽象,抽象类是部分抽象,里面不仅可以包含一些没有具体实现的方法,同样也可以包含一些有具体实现的方法,所以是部分抽象。

interface可以继承多个,而抽象类只能继承一个,抽象类可以间接被实例化,interface算是被间接引用。

1.4 sealed关键字的使用,在对类使用时,该类将不能被继承,在对方法使用时,该方法将不能被重写。

1.4 反射主要用于动态获取以及加载程序集。获取到程序集的信息反射后就可以使用里面的类、对象,方法、对象数据等。

反射主要用到的类库是System.Reflection

里面使用到的核心类有:Assembly, Type, FieldInfo, PropertyInfo, MethodInfo, ConstructorInfo.

Assembly用于描述程序集,Type用于描述类的类型, FieldInfo描述了类的字段, PropertyInfo描述类的属性,MethodInfo描述类的方法。ConstructorInfo描述类的构造函数。

1.5 .Net和Mono的关系

Mono让.Net可以跨平台运行,而不是仅局限于Windows。Mono为.Net提供了集成开发环境,里面集成实现了.Net的编译器,以及一些基础类库和CRL。

1.6 当在静态构造函数前面添加public时。会出现报错。主要是因为静态构造函数是由CRL来控制的。给其添加访问权限没有什么意义。静态构造函数也不能有参数,因为调用时机和方式都由CRL决定,无法传递参数。

1.7 C#的string类和stringBuilder类的区别。

string是不可变的,所以对string进行修改的时候通常会创建一个新的string副本。当需要频繁修改的时候,会造成很大的内存浪费,通常在需要频繁修改string的时候会选择去使用stringBuilder。因为string的不可变性,所以string是线程安全的。stringBuilder是线程不安全的。不过通常使用string都是考虑到其公用的API以及通用性好,用途广泛。string的读取性能高,stringBuilder的修改性能高。

  1. 写了一份笔试题,整体上来说没什么难度,里面一共三题,基本上用上一些简单的数据结构处理一下存储,以及简单的贪心就可以解决了。
相关推荐
Hody9118 小时前
【XR开发系列】Unity下载与安装详细教程(UnityHub、Unity)
unity·游戏引擎·xr
程序员正茂20 小时前
在Unity3d中使用Netly开启TCP服务
unity·tcp·netly
Little丶Seven20 小时前
使用adb获取安卓模拟器日志
android·unity·adb·个人开发
黄思搏3 天前
Unity坐标转换指南 - 3D与屏幕UI坐标互转
ui·3d·unity
weixin_424294673 天前
在 Unity 游戏开发中,为视频选择 VP8 还是 H.264
unity·游戏引擎
一步一个foot-print3 天前
【Unity】Light Probe 替代点光源给环境动态物体加光照
unity·游戏引擎
@LYZY3 天前
Unity 中隐藏文件规则
unity·游戏引擎·游戏程序·vr
霜绛3 天前
C#知识补充(二)——命名空间、泛型、委托和事件
开发语言·学习·unity·c#
Sator14 天前
使用Unity ASE插件设置数值不会生效的问题
unity·游戏引擎
程序猿追4 天前
轻量级云原生体验:在OpenEuler 25.09上快速部署单节点K3s
人工智能·科技·机器学习·unity·游戏引擎