为了获得dotnet中的子项目数量,有时我不得不问一个属性Lenght有时我必须问一个属性Count。
这种区别有什么理由吗?
示例:
int[] a; if (a.Length == 0) ....
IList<int> b; if (b.Count == 0) ....
注意Difference between IEnumerable Count() and Length听起来很相似,但没有回答长度和计数之间的语义
答案 0 :(得分:5)
我不能引用某个来源,但我认为.Length是固定值,而.Count可以更改。
创建数组后,您无法更改数组中的项目数,因此具有.Length。
您可以添加(或删除)List
,因此具有.Count。
修改强>
所以.Length
:
.Count
或.Count()
:
答案 1 :(得分:3)
从语义上讲,数组具有恒定数量的元素,它具有 length ,因此该属性称为Length。列表包含可变数量的元素,如果您想知道有多少元素,则需要计算它们,因此计数名称。
答案 2 :(得分:2)
Length
是一个数组属性,Count
一个ICollection
一个Count()
方法IEnumerable
,但除此之外,它们的含义相同。
也就是说,他们在集合中拥有该数量的项目。
注意:在IEnumerable
的情况下,Count()
方法可以(通常会)迭代集合中的所有项目以获取计数。这些属性只会返回一个值。
答案 3 :(得分:2)
没有语义差异。它只是我们应该处理的框架设计细节。
答案 4 :(得分:1)
我记得Framework Design Guidelines包含关于这种差异的注释(我将在明天对它进行讨论)。我记得,设计师认为这是设计中的一个怪癖,因为它对很多开发人员来说没有意义。请记住,在开始时没有.NET的设计指南,并且大部分.NET API都是从Java复制的,包括怪癖。