2010-12-01 7 views

答えて

7

私は、次のことになる Thumbrule 一般的に言うと思います:

  • Lengthが固定長のために、すなわちリスト( ICollectionから)、

    • Countが 可変長のコレクションのためにあります コレクション、つまり配列、または他の 不変オブジェクト、つまりstringです。

    UPDATE:ReadOnlyCollection<T>Count性質を持っていますが、(Greg Beechのコメントどおり)

    だけCountを詳しく説明するが、ICollectionから伝わってくるし、常に例えば、可変性を示すものではありません。そうではありませんしかし、それはICollectionを実装しています。

    おそらく親指のより正確なルールは次のようになります。

    • CountICollection
    • Lengthを実装 何かが不変を示していることを示しています。
  • +0

    私はそれが可変長のコレクションであるとは言いません。 'ReadOnlyCollection 'は明らかに不変で固定長ですが、 'Count'プロパティを持っています。それは、他の振る舞いに関係なく、 'ICollection'を実装しているものだけです。 –

    +1

    非常に良い点は、明らかに例外があるが、OPは親指を望んでいた。 – GenericTypeTea

    3

    タイプがICollectionの場合は、Countプロパティが実装されます。一方、Lengthは標準ではなく、Arrayクラスのプロパティとして定義されているので、すべての固定サイズの配列にも同様の効果があります。その他など

    0

    CountはICollectionを由来とLengthは、特に、典型的には、特定の種類、例えばStringArrayとして不変であるタイプで定義されていると述べています。

    私には、Countは、何かのカウントが容易に変更される可能性があることを意味します。 Lengthより不変です。与えられたオブジェクトの長さは、通常、劇的な変化なしには変化しません。

    また、LINQで定義されている拡張方法Count()があります。これは、これらのプロパティの両方に共通のインターフェイスを提供します。 LINQはできるだけ効率的にCount()を返すほどスマートです(CountやLengthプロパティが存在する場合は呼び出す)ので、まともな選択肢です。

    関連する問題