项目中的好多同学都是之前写C++的,用了unity之后才开始写C#代码,虽然说转过来很轻松,但是往往会把C++的惯性思维带过来,不自觉的就认为C#跟C++一样。
项目在写一个接口的时候,需要根据index返回list中的元素,因为原先这个接口有效率问题,所以我们在改的时候也比较谨慎,有同学提出,如果用List也是不高效的,因为在index大的时候,需要从到到位进行链表查找,效率必定不尽如人意。殊不知用链表的是C++里面的List,而C#中的List是用数组来实现的,进行下标取值效率问题根本用不着担心!
C#的List源码开头部分如下:
public class List<T> : IList<T>, System.Collections.IList, IReadOnlyList<T>
{
private const int _defaultCapacity = 4;
private T[] _items;
[ContractPublicPropertyName("Count")]
private int _size;
private int _version;
[NonSerialized]
private Object _syncRoot;
static readonly T[] _emptyArray = new T[0];
items就是List定义的泛型数组