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. 写了一份笔试题,整体上来说没什么难度,里面一共三题,基本上用上一些简单的数据结构处理一下存储,以及简单的贪心就可以解决了。
相关推荐
future_studio2 天前
聊聊 Unity(小白专享、C# 小程序 之 播放器)
unity·小程序·c#
向宇it2 天前
【unity实战】MapMagic 2实战例子
游戏·3d·unity·c#·游戏引擎
SlowFeather2 天前
Unity TMP可控角度多色渐变文字
unity·游戏引擎
霜绛2 天前
Unity:UGUI笔记(一)——三大基础控件、组合控件
笔记·学习·unity·游戏引擎
小趴菜82272 天前
Android中加载unity aar包实现方案
android·unity·游戏引擎
今夕资源网3 天前
牛童三国单机游戏Unity源码 免费开源
游戏·unity·单机游戏·游戏源码·unity源码·unity游戏
future_studio3 天前
聊聊 Unity(小白专享、C# 小程序 之 图片播放器)
unity·小程序·c#
ellis19703 天前
toLua[七] Examples 06_LuaCoroutine2分析
unity
L X..3 天前
Unity 光照贴图异常修复笔记
unity·c#·游戏引擎