英雄联盟怎么做直播网站网站根目录表示
- 作者: 五速梦信息网
- 时间: 2026年04月20日 06:59
当前位置: 首页 > news >正文
英雄联盟怎么做直播网站,网站根目录表示,怎么免费创建网页,综合权重查询C#中List底层原理剖析 1. 基础用法2. List的Capacity与Count#xff1a;3.List的底层原理3.1. 构造3.2 Add()接口3.3 Remove()接口3.4 Inster()接口3.5 Clear()接口3.6 Contains()接口3.7 ToArray()接口3.8 Find()接口3.8 Sort()接口 4. 总结5. 参考 1. 基础用法 list.Max() … C#中List底层原理剖析 1. 基础用法2. List的Capacity与Count3.List的底层原理3.1. 构造3.2 Add()接口3.3 Remove()接口3.4 Inster()接口3.5 Clear()接口3.6 Contains()接口3.7 ToArray()接口3.8 Find()接口3.8 Sort()接口 4. 总结5. 参考 1. 基础用法 list.Max() 取最大元素 list.Avgage() 取平均值 static void Main() {Liststring names new Liststring();names.Add(一号元素);names.Add(二号元素);names.Add(狗);names[2] 三号元素;//修改第三个元素string[] str new string[] { 四号元素, 五号元素, 六号元素 };names.AddRange(str);//为集合增加数组Console.WriteLine(当前集合元素个数为{0},names.Count);//返回集合元素个数Console.WriteLine(当前集合的容量为{0}, names.Capacity);//返回当前集合的容量//当添加元素的时候集合的容量不足以容纳所有元素就会自动增加目前元素数一倍的容量。Console.WriteLine(names.Contains(三号元素));//返回集合中是否存在某元素bool类型names.IndexOf(三号元素);//返回元素的索引值names.Clear();//清空所有元素元素个数为0但是容量不变 }2. List的Capacity与Count Count 属性表示 List 中实际包含的元素数量。它是一个只读属性。Capacity 属性表示 List 内部数组的容量即它可以容纳的元素的数量。容量是指分配给列表的内部数组的大小而不是列表中实际包含的元素数量。当添加元素时如果内部数组的容量不够List 会自动调整容量以容纳更多的元素。 Listint list1 new Listint(); WriteLine(\(List的初始容量{list1.Capacity}); WriteLine(\)List的初始数量{list1.Count}); list1.Add(0); WriteLine(\(通过Add()添加一个元素后的容量{list1.Capacity}); WriteLine(\)通过Add()添加一个元素后的数量{list1.Count});以上代码输出 List的初始容量0 List的初始数量0 通过Add()添加一个元素后的容量4 通过Add()添加一个元素后的数量13.List的底层原理 3.1. 构造 private class ListT : IlistT, System.Collections.IList, IReadOnlyListTList内部是由数组实现的当没有指定额定容量时初始容量为0。 3.2 Add()接口 将给定对象添加到此列表的末尾。每次增加元素前都会判断数组容量是否够。不够则进行扩容。 public void Add(T item)每次扩容都会扩充一倍。数组初始值为0扩容初始值为4因此整个扩容路线是0-4-8-16-32-64-125-256……每次扩容都会申请新的空间然后进行元素拷贝然后还要回收旧空间。会给GC造成不小的负担。另外还有浪费空间的缺点。比如存放126个元素时会扩容到256的空间剩下的130个空间就浪费了。 3.3 Remove()接口 删除列表中首次出现的item。将从头到尾搜索使用Object.Equal()进行相等的判断。 public bool Remove(T item)找到要删除的位置后使用Array.Copy()进行覆盖;时间复杂度O(n);删除一个元素后内部数组的容量不变。 3.4 Inster()接口 功能在给定索引处插入元素。每次插入元素前都会检查当前容量是否足够如果不够则进行扩容。 public void Insert(int index, T item);在插入元素时采用的也是复制数组的形式将数组指定索引后面的元素向后移动一个位置。与Add()类似会给GC产生负担并且存在空间浪费的问题。 3.5 Clear()接口 功能清除列表内容。注意只是将Count置之前申请空间不变也就是Capacity不变。 Listint list1 new Listint(); list1.Add(0); WriteLine(\(通过Add()添加一个元素后的容量{list1.Capacity}); WriteLine(\)通过Add()添加一个元素后的数量{list1.Count}); list1.Clear(); WriteLine(\(Clear后的容量{list1.Capacity}); //清除后容量不变。即之前申请的空间不变 WriteLine(\)Clear后的数量{list1.Count}); //数量置0以上输出 通过Add()添加一个元素后的容量4 通过Add()添加一个元素后的数量1 Clear后的容量4 Clear后的数量03.6 Contains()接口 功能确定某元素是否在List中。 public bool Contains(T item)使用线性查找的方式挨个比较元素。 3.7 ToArray()接口 复制列表到一个新数组O(n)的操作。 public T[] ToArray()3.8 Find()接口 功能查找满足指定条件的元素。接受一个Predicate委托作为参数该委托定义了要应用于每个元素的条件。 public T Find(PredicateT match)线性查找的方式挨个比较返回满足条件的第一个元素。用法Listint numbers new Listint { 1, 2, 3, 4, 5 }; // 使用Find函数查找大于3的第一个元素 int result numbers.Find(x x 3); //Lambda表达式x x 3表示条件 Console.WriteLine(result); // 输出: 43.8 Sort()接口 功能对列表中的元素进行排序。Sort 方法使用元素的默认比较器进行排序或者可以传递一个自定义的比较器作为参数。 public void Sort(int index, int count, TCompareeT comparer)index与count是指定排序区间。不指定的话则整个列表进行排序用法Listint numbers new Listint { 5, 2, 8, 1, 3 }; numbers.Sort(); numbers.Sort((x, y) y.CompareTo(x));// 使用自定义比较器对列表进行降序排序该方法在原地修改列表而不是返回排序后的列表。排序时使用Array.Sort()方法进行排序该方法内部采用了快速排序效率是O(nlogn).
- 总结
List的效率并不高甚至比数组还差只是通用性强而已List 的内存分配方式也不合理。当List 里的元素不断增加时会多次重新分配数组导致原来的数组被抛弃造成回收的压力。对于第2点的问题我们可以在创建List 实例时提前告知 List 对象最多会有多少元素在里面这样 List 就不会因为空间不够而抛弃原有的数组去重新申请教组了。例如Listint list11 new Listint(128);
WriteLine(\(容量{list11.Capacity}); //容量128
WriteLine(\)数量{list11.Count}); //数量0List是线程不安全的。 当多个线程同时访问和修改同一个 List 实例时可能会导致不可预测的结果或发生错误。例如并发读写的问题。一个线程正在读取列表的元素而另一个线程在同时修改列表这可能导致读取到无效或不正确的数据。可使用同步机制解决该问题。lock语句或其他同步机制来保护对 List 的并发访问。确保同一时间只有一个线程访问列表。
- 参考 List源码地址链接: https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs
- 上一篇: 英文站友情链接去哪里查小蚁人网站建设
- 下一篇: 英语教学网站建设意见2023最近爆发的流感叫什么
相关文章
-
英文站友情链接去哪里查小蚁人网站建设
英文站友情链接去哪里查小蚁人网站建设
- 技术栈
- 2026年04月20日
-
英文站用wordpress注册个网站域名多少钱一年
英文站用wordpress注册个网站域名多少钱一年
- 技术栈
- 2026年04月20日
-
英文站 wordpress建筑人才网一砖一瓦
英文站 wordpress建筑人才网一砖一瓦
- 技术栈
- 2026年04月20日
-
英语教学网站建设意见2023最近爆发的流感叫什么
英语教学网站建设意见2023最近爆发的流感叫什么
- 技术栈
- 2026年04月20日
-
英语培训建设网站方案西部数码域名注册
英语培训建设网站方案西部数码域名注册
- 技术栈
- 2026年04月20日
-
英语网站案例辽宁建设工程信息网大连
英语网站案例辽宁建设工程信息网大连
- 技术栈
- 2026年04月20日






