С#. Где хранится код методов структуры?
Известно, где .NET сохраняет типы значений в памяти (в основном в стеке, но может быть в куче при определенных обстоятельствах и т.д.)...
Мой вопрос: где код структуры?
Если я скажу 16 байт полей данных в структуре и массивный метод вычисления в нем - я предполагаю, что 16 байт будет скопирован в стек, а код метода будет храниться где-то в другом месте и будет использоваться для всех экземпляров структура.
Правильны ли эти презумпции?
Ответы
Ответ 1
MSIL хранится в разделе кода сборки, который Windows отображает в памяти при первой загрузке сборки. Когда метод сначала выполняется, JIT скомпилирует MSIL с кодом x86/x64. Когда метод скомпилирован в память, он обычно остается там и будет использоваться всеми потоками. Существуют некоторые обстоятельства, при которых несколько приложений AppDomains заставят MSIL скомпилироваться второй раз, но это редко.
Ответ 2
Это отличная статья для выяснения того, что происходит.
Ответ 3
Да. В основном методы управляются отдельно в некоторой структуре, которая, в основном, не так хорошо известна и документирована (как никогда ее не требуется).
он также сохраняется как байт-код, скомпилированный, также может быть встроен в другие методы.
Строка известна по типу, поэтому вызовы методов могут быть правильно маршрутизированы.