Chcę zapytać, dlaczego wszystkie wywołania metod zewnętrznych są statyczne? W jaki sposób CLR obsługuje te połączenia?W jaki sposób CLR obsługuje wywołania metod zewnętrznych w C#
5
A
Odpowiedz
4
Wywołania metod zewnętrznych to kod niezarządzany. W związku z tym nie ma sensu wywoływać instancji obiektu (zarządzanego) - pierwszym (ukrytym) argumentem w metodzie instancji jest odwołanie do instancji, czyli this
. Zwykle, metody extern
wymagają tylko prostych typów (prymitywów, ciągów itp.) - nie obiektów (z wyjątkiem może tablic - a nawet często są one najpierw rozwiązywane, aby IntPtr
).
2
extern
również połączenia muszą być zgodne z API w stylu "C", a C nie wie nic o obiektach, więc połączenia są static
.
Moja wypowiedź nie jest w 100% prawdziwe, ponieważ istnieje ThisCall wywołanie konwencja, która może być używana z [DllImport] jako pomoc w C++ wywołanie metody.
Powiązane problemy
- 1. W jaki sposób Stream.max() obsługuje równość?
- 2. Jaki jest cel zewnętrznych konstruktorów statycznych w języku C#?
- 3. Czy PHP obsługuje wzorzec RAII? W jaki sposób?
- 4. W jaki sposób PHP obsługuje zmienne?
- 5. W jaki sposób mogę obsłużyć sposób Polymer bez zewnętrznych bibliotek?
- 6. W jaki sposób KVM obsługuje przerwanie fizyczne?
- 7. W jaki sposób Akka obsługuje wersje wiadomości?
- 8. W jaki sposób string.Format obsługuje wartości puste?
- 9. Znajdź wolne/nieefektywne wywołania metod w dotnet
- 10. Dlaczego Objective-C nie obsługuje przeciążania metod?
- 11. W jaki sposób IEnumerable .Min obsługuje typy Nullable?
- 12. W jaki sposób CLR lokalizuje pliki symboli pdb?
- 13. W jaki sposób rozdzielczość przeciążenia grupy metod różni się od rozdzielczości przeciążenia wywołania metody?
- 14. Wywołania metod kolejkowania - jakikolwiek pomysł?
- 15. Jaki jest najlepszy sposób wywołania Swift z C?
- 16. W jaki sposób Java obsługuje pola podczas upcastingu?
- 17. Łączenie zmiennych zewnętrznych w C
- 18. W jaki sposób * limit/* __ restrict__ działa w C/C++?
- 19. W jaki sposób feof() działa w C
- 20. W jaki sposób git obsługuje uprawnienia do folderów?
- 21. W jaki sposób moja aplikacja jednowątkowa Rails obsługuje żądania równoczesne?
- 22. W jaki sposób Z3 obsługuje arytmetyczną liczbę całkowitą nieliniową?
- 23. Zmień sposób, w jaki moduł Python Cmd obsługuje autouzupełnianie
- 24. W jaki sposób Flex obsługuje dokładnie lokalizację bison?
- 25. W jaki sposób Spring MVC obsługuje wielu użytkowników?
- 26. W jaki sposób Ruby obsługuje bajty/pliki binarne?
- 27. W jaki sposób argument standaryzacyjny glmnet obsługuje fałszywe zmienne?
- 28. W jaki sposób prototyp wzorca Yegge obsługuje zmienne instancji?
- 29. W jaki sposób struktura edytora GWT 2.1 obsługuje typy podstawowe?
- 30. W jaki sposób Domain Driven Design obsługuje raportowanie?