2

少儿编程list教程

在CSharp(C#)中(不知Java是否也一样),List有两个获取数组长度的方式,分别是List.Count和List.Count()。很多人有疑问,为什么会出现两个获取数组长度的方式?其实仔细看我们就知道,List.Count是属性,List.Co

在CSharp(C#)中(不知Java是否也一样),List有两个获取数组长度的方式,分别是List.Count和List.Count()。很多人有疑问,为什么会出现两个获取数组长度的方式?其实仔细看我们就知道,List.Count是属性,List.Count()是方法,它们的执行方式是不一样的!

List.Count是集合在改变内容时赋值的,比如执行List.Add()的时候,在Count基础上加1,在执行List.Remove()时,在Count基础上减1,而Count在源码中的值源自私有属性_size。

但List.Count()就不一样了,采取的方式是直接循环集合内容,每获取到一个集合内容则将长度加1,最终返回数组的整个长度。

后者看起来显然是不效率的,但是为什么要这么做呢?原因其实很简单,那就是List.Count是List的自有属性,而List.Count()则源自Enumerable。

几乎所有的集合类型都继承了IEnumerable(包括ICollection),但并不是所有集合类型都有类似List.Add()或者List.Remove()这样的方法。因此,List.Count是List单独实现的!

比如说,有一些数组类型是可以先定义空间长度,再去定义数组内容的,此时如果使用Count去获取它的长度,虽然可能能获取到,但是获取的只是数组的空间长度,所以意义并不大。因此,如果在CSharp内,如果只定义了数组空间长度但是未给数组定义内容的话,是使用不了List.Count这个属性的!

因此,从源码上来看,使用List.Count在获取值的速度上不光优于List.Count(),从某种角度说,它所代表的意义也是要大于List.Count()的!

#程序员# #编程# #编程语言#

本文来自网络,不代表本站立场。转载请注明出处: https://tj.jiuquan.cc/a-2596919/
1
上一篇少儿编程游戏星星公主
下一篇 少儿编程央视主持人(少儿编程师)

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: alzn66@foxmail.com

关注微信

微信扫一扫关注我们

返回顶部