Unity积累
萌新柿子
这个作者很懒,什么都没留下…
展开
-
C#中Dictionary底层剖析
简单解释这句话意思就是,当我们给定的一个Key值,通过这个构造这个Hash表时候给定的Hash函数求得Hash地址,若在表中没有记录这个地址则表示查找不成功,否则比较关键字,若给定的值相等,则表示查表成功。简单来说就是当Key不相等的时候,他的HashCode相等,这就造成了哈希冲突,而这种冲突是不能完全避免的。对于实例对象和字符串来说,它们么有直接的数字作为Hash的标准,所以他们会通过其内存地址去计算一个Hash值,这个内存对象的函数就叫做HashCode,他是基于内存地址计算而来的。原创 2023-03-19 14:08:33 · 386 阅读 · 0 评论 -
关于C#List底层原理
因为最近在面试过程中有问到是否知道List底层是如何实现的,但由于本人非科班出身也只是自学C#,日常也只是使用并没有从底层特地了解过C#很多底层逻辑。感觉这部分知识比较欠缺,所以博客记录一下。首先List是C#中非常常见的一个数据结构类型,相比于普通数组,他是可以伸缩的,在平常使用中我经常使用它去代替数组,但并不了解其底层是如何做到自动扩展的。接下来分析一下。原创 2023-03-16 23:30:32 · 1388 阅读 · 1 评论 -
Unity中Mono和IL2CPP
Mono作为.Net平台的开源项目,支持Linux,Windows,Mac和Android。其跨平台的特性也是Unity选择Mono的原因。运行时库(libli2cpp):支持IL2CPP虚拟机运行,可以提供GC,线程获取,文件获取,内部调用直接修改托管堆数据结构的。Unity编译打包时,使用C#编写的脚本会通过Mono的C#编译器打包成IL(中间语言),然后在Mono的虚拟机中运行。AOT:将IL转换成C++源码,然后通过不同平台的C++编译器编译,实现多平台兼容。相对于Mono的构建速度慢。原创 2023-03-15 23:03:35 · 610 阅读 · 0 评论