Wyszukiwanie obiektu klasy na liście

0

Istnieje lista jak poniżej:

List<NazwaInterfejsuKlas> ObiektyKlas;

Mamy daną nazwę klasy oraz nazwę pliku assembly, z której pochodzi. Jak sprawdzić, czy na liście istnieje obiekt tej klasy?

Można przejechać listę pętlą i porównywać nazwy klas, np:

function CzyJestNaLiscie(string NazwaKlasy)
{
   foreach(NazwaInterfejsuKlas o in ObiektyKlas)
   {
      if(o.GetType().Name == NazwaKlasy) {...}
   }
}

Jednak przy dużej liczbie obiektów w klasie i nazw do sprawdzenia może to być dość czasochłonne. Szukam najszybszego sposobu, żeby sprawdzić, czy obiekt klasy o danej nazwie (lub pliku) znajduje się na liście.

Czy utworzenie słownika z referencjami znacząco przyspieszy wyszukiwanie?

Dictionary<string,NazwaInterfejsuKlas> slownik;
0

Nie prościej napisać if (o is Klasa)?

0

Lista w C# to to samo co vector w C++, wiec jesli dane sa posortowane to masz w liscie metode BinarySearch (jesli nie masz posortowanych to albo sortujesz i binary search albo liniowo).

Poza tym mam przeczucie ze probujesz odkryc polimorfizm na nowo. Napisz co chcesz zrobic, moze da sie to zrobic jeszcze lepiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1