Mam program, który wymaga szybkiego działania. W ramach jednej z wewnętrznych pętli muszę przetestować typ obiektu, aby zobaczyć, czy dziedziczy on z określonego interfejsu.
Jednym ze sposobów byłoby użycie wbudowanej funkcji sprawdzania typu środowiska CLR. Najbardziej elegancka metoda, która prawdopodobnie zawiera słowo kluczowe „jest”:
if (obj is ISpecialType)
Innym podejściem byłoby nadanie klasie bazowej mojej własnej wirtualnej funkcji GetType (), która zwraca wstępnie zdefiniowaną wartość wyliczenia (w moim przypadku potrzebuję tylko wartości bool). Ta metoda byłaby szybka, ale mniej elegancka.
Słyszałem, że istnieje instrukcja IL przeznaczona specjalnie dla słowa kluczowego „is”, ale nie oznacza to, że jest ona wykonywana szybko po przetłumaczeniu na natywny asembler. Czy ktoś może podzielić się spostrzeżeniami na temat wykonania metody „jest” w porównaniu z inną metodą?
AKTUALIZACJA: Dzięki za wszystkie odpowiedzi! Wydaje się, że kilka pomocnych punktów jest rozłożonych na odpowiedzi: uwaga Andrew dotycząca automatycznego wykonywania rzutów jest niezbędna, ale dane dotyczące wydajności zebrane przez Binary Worrier i Iana są również niezwykle przydatne. Byłoby wspaniale, gdyby jedna z odpowiedzi została zredagowana tak, aby zawierała wszystkie te informacje.