集合具有长度或计数属性的Thumbrule-C#
有些C#集合具有count属性,有些集合具有length属性。是否有一个thumbrule来找出哪一个有哪一个以及为什么有差异?我想说一般的thumbrule如下所示:集合具有长度或计数属性的Thumbrule-C#,c#,.net,C#,.net,有些C#集合具有count属性,有些集合具有length属性。是否有一个thumbrule来找出哪一个有哪一个以及为什么有差异?我想说一般的thumbrule如下所示: Count用于具有 可变长度,即列表(从 i收集) Length表示固定长度 集合,即数组或其他 不可变对象,即字符串 更新: 仅详细说明一下,Count来自ICollection,并不总是表示可变性,例如(根据的注释)具有Count属性,但它不是可变的,但它确实实现了ICollection 也许更准确的经验法则是: Co
用于具有 可变长度,即列表(从Count
)i收集
表示固定长度 集合,即数组或其他 不可变对象,即Length
字符串
Count
来自ICollection
,并不总是表示可变性,例如(根据的注释)具有Count
属性,但它不是可变的,但它确实实现了ICollection
也许更准确的经验法则是:
表示 实现Count
i收集
表示不变性Length
Count
来自ICollection,并且Length
专门定义在某些类型上,通常是不可变的类型,例如String
和Array
对我来说,Count
意味着可变性,因为某些事物的计数很容易改变<代码>长度感觉更不可更改。一个给定物体的长度通常不会在没有剧烈测量的情况下改变
还要记住,LINQ中定义了扩展方法
Count()
,它为这两个属性提供了一个公共接口。LINQ足够聪明,可以尽可能高效地返回Count()(即如果存在Count或Length属性,它将调用它们),因此它是一个不错的选择。我不会说它适用于具有可变长度的集合ReadOnlyCollection
显然是不可变的,具有固定的长度,但它有一个Count
属性。它只适用于实现ICollection
的任何东西,而不考虑其其他行为。非常好的观点,显然也有例外,但OP需要一个thumbrule。