Wyobraź sobie, że obiekt, z którym pracujesz, zawiera kolekcję innych obiektów z nim związanych, na przykład kolekcja Controls na WinForm. Chcesz sprawdzić konkretny obiekt w kolekcji, ale kolekcja nie ma metody Contains()
. Istnieje kilka sposobów radzenia sobie z tym.Używanie nieobsługiwanych wyjątków zamiast Contains()?
- Przeprowadź wdrożenie własnej metody
Contains()
, przechodząc przez wszystkie elementy w kolekcji, aby sprawdzić, czy jedno z nich jest tym, czego szukasz. To wydaje się być podejściem "najlepszej praktyki". - Niedawno natknąłem jakiegoś kodu, w którym zamiast pętli, nie była to próba dostępu do obiektu wewnątrz instrukcji try, co następuje:
try { Object aObject = myCollection[myObject]; } catch(Exception e) { //if this is thrown, then the object doesn't exist in the collection }
Moje pytanie brzmi, jak ubogich praktyka programowania, czy uważasz, że druga opcja jest i dlaczego? W jaki sposób wydajność jest porównywana z pętlą w kolekcji?