2010-12-01 31 views

回答

7

我說一般Thumbrule將執行以下操作:

  • Count是用於與 可變長度的集合,即列表(從 ICollection
  • Length爲固定長度的 集合,即數組,或其他 不可變對象,即string

UPDATE:

只是爲了闡述CountICollection來通過,並不總是表示變異,例如(按照Greg Beech的評論)的ReadOnlyCollection<T>Count屬性,但它不是變量,但它確實實現了ICollection

也許拇指的更精確的規則是:

  • Count表明,一些 實現ICollection
  • Length表示不變性。
+0

我不會說這是對於具有可變長度的集合; `ReadOnlyCollection `顯然是不可變的,並且具有固定的長度,但它具有`Count`屬性。它只是用於實現「ICollection」的任何事情,而不考慮其他行爲。 – 2010-12-01 17:03:42

3

如果類型實現ICollection它將具有Count屬性。另一方面,Length不是標準的,並且被定義爲Array類的屬性,因此所有固定大小的數組也將具有該屬性。

0

正如其他人所說Count來自ICollection的和Length是對某些類型的,典型類型是不可變的,例如StringArray特別限定。

對我而言,Count意味着可變性,因爲某些東西的數量可以輕易改變。 Length感覺更不可變。如果沒有嚴格的措施,給定對象的長度通常不會改變。

另外請記住,在LINQ中定義了擴展方法Count(),它提供了這兩個屬性的通用接口。 LINQ足夠聰明,能夠儘可能高效地返回Count()(即,如果Count或Length屬性存在,它將調用它們),所以它是一個不錯的選擇。