VBA.Collection.Countあります。 5人のメンバーのなぜVBA <code>Collection</code>は方法であるすべてが5員を有する方法
それは/ ゲッターではなく方法でなければなりませんでしたように、Count
方法が見えます。
これはVB6の初期のOOP/MSデザインの遺産ですか?コレクションのデザイナーは、Count
の場合はがメソッドである必要があり、将来の動作上の変更によってインターフェイス/ COMが破損しないようにメソッドとしてCount
を指定すると予測しましたか?
EDITジム・ヒューイットは、コメントで指摘するように、オンラインドキュメントはCount
が財産ですが、オブジェクトブラウザとMIDLがそうでないことを示唆しを示唆しています。
は、ここでのドキュメントですVB6のコレクション内のオブジェクトの数を含むCollection.Count
Property
ロング(長整数)を返します。読み取り専用。
やExcel 2016、Count
中を確認孤独見て、それのようにががゲッターになりたい...
EDIT 22/Sep/16:
私はCollection.Count
は方法ですが、それはは私がを知ることができない理由を答えるにはいくつかの道を行くん理由は正確にを説明していません...ブルース・マッキニーでのVisual Basic 5バックハードコアに
を呼び不可知を知ることに
:なぜCollection.Count
は方法であるあなたがコレクションの実装について知っていると思う
ものは、このバージョンのために間違っているかもしれないと、おそらく次のバージョンのために間違っているだろう。実装の詳細に
:Visual Basicバージョン4が設けられて
コレクションクラスは良い1つのバージョンでした。 Visual Basicバージョン5で提供されるCollectionクラスは、良い2バージョンではありません。ユーザーは多くの苦情や提案をしました。いずれも実装されていません。コレクションで
:
コレクションとは何ですか?あなたはそのユーザー・インターフェースを知っていますが、内部データ構造によって実際に動作するかどうかは分かりません。通常、これは問題ではありません。それが動作する限り、どのように動作するのか気になる人はいますか?しかし、第二の考えでは、内部実装は操作の効率に影響を与えることに拘束されます。いくつかの操作が他の操作よりも効率的でない場合、遅い操作を避けるのが良いかもしれません。
Collection.Item
で
:
は、Visual Basicが行われている可能性が[
Collection.Item
] [プロパティとして]働きます。 (それが要求されました。)
おそらく、コレクションの要素の数が決して格納されず、クラスから決して知られていない可能性があります。そして、それを知る唯一の方法は、すべての要素を反復してカウントすることです。 doesntは私に奇妙に見える...そしてはい、VBAのすべてはVB6の遺産です。 .NETのコレクションはそのようには機能しません。 –
確かに、インスタンスに反復せずに 'Count'を知らせる内部フィールドがありますか? – ThunderFrame
私の賭けはノー、そうではありません。もし存在するならば、メソッドは意味がなく、あなたが言ったようにそれはプロパティになります。 –