Desidero chiedere perché tutte le chiamate di metodo esterne sono statiche? Come il CLR gestisce queste chiamate?In che modo CLR gestisce le chiamate al metodo esterno in C#
5
A
risposta
4
Le chiamate di metodo esterne sono a codice non gestito. Di conseguenza, non ha senso essere chiamato su un'istanza dell'oggetto (gestita): il primo argomento (nascosto) in un metodo di istanza è il riferimento all'istanza, ovvero this
. In genere, i metodi extern
riguardano solo tipi semplici (primitive, stringhe, ecc.) - non oggetti (tranne forse gli array - e anche loro sono spesso risolti a IntPtr
per primi).
2
extern
anche le chiamate devono generalmente essere conformi a un'API "C-style" e C non conosce nulla sugli oggetti, quindi le chiamate sono static
.
La mia affermazione è vera non è al 100% in quanto v'è un thiscall convenzione di chiamata che può essere utilizzato con [DllImport] come un aiuto nel chiamare i metodi C++.
Problemi correlati
- 1. In che modo Javascript gestisce le chiamate ricorsive?
- 2. In che modo oozie gestisce le dipendenze?
- 3. C#: metodo elegante per le chiamate al metodo di composizione
- 4. In che modo ptr_vector gestisce la memoria?
- 5. in che modo KVM gestisce l'interrupt
- 6. In che modo JavaScript gestisce le risposte AJAX in background?
- 7. In che modo Google gestisce gli errori in C++
- 8. In che modo jProfiler gestisce JIT?
- 9. In che modo Monotouch gestisce le risorse (stringhe, immagini, ecc.)?
- 10. In che modo Entity Framework gestisce le transazioni?
- 11. In che modo git gestisce l'autorizzazione per le cartelle?
- 12. In che modo Akka gestisce le versioni dei messaggi?
- 13. In che modo commit_on_success gestisce l'annidamento?
- 14. In che modo Stream.max() gestisce l'uguaglianza?
- 15. In che modo Django Fixtures gestisce ManyToManyFields?
- 16. In che modo django gestisce più utenti
- 17. In che modo Android gestisce più R.java?
- 18. In che modo .Net CLR implementa internamente un'interfaccia?
- 19. Come scrivere un metodo variadic che sostituisce le chiamate al metodo concatenato?
- 20. Chiamate di nuovo metodo in modo generico
- 21. Sovrascrivere le chiamate di metodo in Ruby?
- 22. In che modo Ruby gestisce il compito semanticamente?
- 23. Connessione al database SQL esterno in C#
- 24. In che modo MSVC6 gestisce le eccezioni dalle funzioni "C" esterne?
- 25. Android 6.0 gestisce in modo errato il metodo drawCircle
- 26. In che modo la pigrizia di Clojure interagisce con le chiamate al codice Java/impuro?
- 27. Come intercettare le chiamate al metodo di istanza?
- 28. In che modo la tua organizzazione gestisce i componenti comuni?
- 29. In che modo R gestisce Unicode/UTF-8?
- 30. In che modo Java gestisce i campi durante l'upcasting?