Stosuje zasady "lepszej konwersji" (7.4.3.3 specyfikacji C# 3) w ramach rozwiązywania przeciążenia (sekcja 7.4.3 w ogóle).
Zasadniczo w tym przypadku istnieje konwersja z string
na object
, ale nie z object
na string
. Zgodnie z regułami oznacza to, że konwersja z null
na jest lepsza od tej z null
do object
, więc używane jest przeciążenie z parametrem string
.
rozdzielczości przeciążenia można uzyskać bardzo skomplikowane, gdy następujące czynniki wziąć udział:
- Nie może być metody rodzajowe w kandydata powołanego
- Jeśli są metody rodzajowe, wnioskowanie typu jest stosowana do każdego z je oddzielnie, dając różne możliwości konwersji
- Jeśli jakiekolwiek argumenty są grupami metod, można je przekonwertować na różne typy delegatów - być może nawet używając różnych sygnatur metod, jeśli nazwana grupa metod O ma wiele przeciążeń
- Dziedziczenie może prowadzić do zaskakujących wyników
- macierze parametrów (
params
) Dodaj do zabawy
- Opcjonalne parametry w C# 4 przyczynić się do decyzji zbyt
Zasadniczo przeciążenia może być prawdziwa puszka robaków - jeśli to możliwe, projekt przeciąża tak, aby tylko jeden z nich był zawsze trafnym celem każdego wywołania metody, dzięki czemu nie musisz się martwić o szczegółowe zasady.