Chcę sprawdzić, czy typ obsługuje IComparable przed sortowaniem go, ale stwierdziłem, że sprawdzanie, czy typ obsługuje interfejs IComparable za pomocą "jest" nie zawsze daje mi poprawną odpowiedź. Na przykład typeof(int) is IComparable
zwraca wartość false, nawet jeśli int obsługuje interfejs IComparable.Jak używać "is" do testowania, czy dany typ obsługuje IComparable?
Zauważam, że typeof(int).GetInterfaces()
zawiera listę IComparable, a typeof(int).GetInterface("IComparable")
zwraca typ IComparable, dlaczego więc "nie" działa tak, jak się spodziewam?
Specyfikacja 'is' mówi, że zwraca wartość true, gdy konwersja nie spowoduje wyjątku. spróbuj przekonwertować 'int' na' IComparable' i sprawdź, czy nie ma problemów. – Dani