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. 写了一份笔试题,整体上来说没什么难度,里面一共三题,基本上用上一些简单的数据结构处理一下存储,以及简单的贪心就可以解决了。
相关推荐
ellis19707 小时前
Unity插件SafeArea Helper适配异形屏详解
unity
nnsix8 小时前
Unity Physics.Raycast的 QueryTriggerInteraction枚举作用
unity·游戏引擎
地狱为王9 小时前
Cesium for Unity叠加行政区划线
unity·gis·cesium
小贺儿开发17 小时前
Unity3D 八大菜系连连看
游戏·unity·互动·传统文化
在路上看风景18 小时前
25. 屏幕像素和纹理像素不匹配
unity
ۓ明哲ڪ19 小时前
Unity功能——创建新脚本时自动添加自定义头注释
unity·游戏引擎
熬夜敲代码的小N19 小时前
Unity大场景卡顿“急救包”:从诊断到落地的全栈优化方案
java·unity·游戏引擎
派葛穆21 小时前
Unity-realvirtual-S7通讯快速配置(未完结)
unity·游戏引擎
w-白兰地1 天前
【Addressable远端加载资源】
unity·addressable·资源加载
小张不爱写代码1 天前
[Unity 技巧] 如何自定义 Inspector 变量显示名称 (CustomLabel)
unity·游戏引擎