Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
集合具有长度或计数属性的Thumbrule-C#_C#_.net - Fatal编程技术网

集合具有长度或计数属性的Thumbrule-C#

集合具有长度或计数属性的Thumbrule-C#,c#,.net,C#,.net,有些C#集合具有count属性,有些集合具有length属性。是否有一个thumbrule来找出哪一个有哪一个以及为什么有差异?我想说一般的thumbrule如下所示: Count用于具有 可变长度,即列表(从 i收集) Length表示固定长度 集合,即数组或其他 不可变对象,即字符串 更新: 仅详细说明一下,Count来自ICollection,并不总是表示可变性,例如(根据的注释)具有Count属性,但它不是可变的,但它确实实现了ICollection 也许更准确的经验法则是: Co

有些C#集合具有count属性,有些集合具有length属性。是否有一个thumbrule来找出哪一个有哪一个以及为什么有差异?

我想说一般的thumbrule如下所示:

  • 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。