作業しているオブジェクトに、それに関連付けられている他のオブジェクトのコレクションがあるとします。たとえば、WinFormのControlsコレクションです。コレクション内の特定のオブジェクトをチェックしたいのですが、コレクションにContains()
メソッドがありません。これに対処するにはいくつかの方法があります。
Contains()
コレクション内のすべてのアイテムをループして、それらの1つが探しているものであるかどうかを確認することにより、独自のメソッドを実装します。これは「ベストプラクティス」のアプローチのようです。- 私は最近、ループの代わりに、次のようにtryステートメント内のオブジェクトにアクセスしようとしたコードに出くわしました。
try { Object aObject = myCollection[myObject]; } catch(Exception e) { //if this is thrown, then the object doesn't exist in the collection }
私の質問は、プログラミングの実践がどれほど貧弱であると思いますか、そしてその理由は何ですか?コレクションのループと比較して、パフォーマンスはどうですか?