2010-04-23 15 views

Odpowiedz

16

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 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.

Powiązane problemy