![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#相关
文章平均质量分 64
xiaoruanzhu
新入行的菜鸟
展开
-
readonly和const的区别
readonly为运行时常量,const为编译时常量编译时常量被运行时常量快,性能好,但缺乏灵活性(编译时常量需要重新编译应用程序); 编译时常量(const)仅限于数值和字符串(基元类型),C#不允许使用new来初始化一个编译时常量; const修饰的常量默认是静态的(类型); readonly修饰的字段可以在构造函数中被修改; 使用const较之使用readonly的好原创 2016-08-24 12:08:52 · 744 阅读 · 0 评论 -
一周小结2016/8/15--21_Navmesh_事件回调
用NameshAgent寻路的时候,如果目标点不能到达的时候,想换个目标点的话,用agent.pathStatus来判断并不合适,可以用CalculatePath来事先判断,然后将得到的NavMeshPath交给agent即可 NavMeshPathpath=newNavMeshPath(); if(agent.Cal原创 2016-08-17 15:04:20 · 814 阅读 · 0 评论 -
略谈GCHandle
我们在使用c#托管代码时,内存地址和GC回收那不是我们关心的,CLR已经给我们暗箱操作。但是如果我们在c#中调用了一个非托管代码,比如vc的DLL,而且他有个回调函数,需要引用c#中的某个对象并操作,这时候你就得要小心了。要是非托管代码中用到得托管代码那个对象被GC给回收了,这时候就会报内存错误。所以我们就要把那个对象“钉”住(pin),让它的内存地址固定,而不被垃圾回收掉,然后最转载 2016-09-06 15:08:24 · 4353 阅读 · 1 评论 -
Sort排序问题
C#封装的Sort()排序方法,必须实现IComparable接口才行,说的直白一点就是排序的时候需要知道是按什么排序的,通过比较什么排序的public class TestSort : MonoBehaviour { public List myList=new List(); void Start () { myList.Add(new MyClass原创 2016-09-27 15:50:17 · 527 阅读 · 0 评论 -
C#ThreadPool.QueueUserWorkItem实例
今天学习线程池的时候发现,网上能搜到的都是很久以前的文档了,大家都是照搬过去,有没有考证都是问题。经过测试结果已经和他们说的不一样了,比如 List actions = new List() { () => { Console.WriteLine("A-1"); }, () => { Conso原创 2016-10-25 15:28:02 · 6471 阅读 · 0 评论 -
对象池
这周VR做飞机的项目,子弹太多,用到对象池,用的是一个插件,但是发现一个问题,子弹数特别多的情况下,池里放了400个子弹,特效也特别多,结果发现一个问题,从池中取对象和对象回池用时太长,多的时候能达到2ms。最后查看了底层,发现一个问题,池中对象是用list存放的,每次移除的时候耗时太多,应该是这个原因造成的。为了验证这个问题,我自己写了一个对象池,思路大致是对的,没有写那么严谨,可以做个参考。最原创 2016-09-30 13:56:56 · 695 阅读 · 0 评论 -
对象池GameObjectPool
上个飞机的项目,子弹太多的情况下,对象池插件效率比较低,今天没事就自己写了一个,感觉效率还行。使用方法简单,只需要在某个物体上挂在PoolManager脚本即可,就可以直接使用了,想再其他脚本中调用InitPrefab(GameObject prefab)提前生成池也可以,不调用也可以使用using UnityEngine;using System.Collections;using原创 2016-10-25 19:34:41 · 1062 阅读 · 0 评论 -
实现足够大List<int>剔除重复的数字
static void Screen() { List newList=new List(); List list =new List(); for (int i = 1; i < 100000; i++) { list.Add(i%100); } int repetit原创 2017-04-24 11:40:52 · 991 阅读 · 0 评论