С#. Где хранится код методов структуры?

Известно, где .NET сохраняет типы значений в памяти (в основном в стеке, но может быть в куче при определенных обстоятельствах и т.д.)...

Мой вопрос: где код структуры?

Если я скажу 16 байт полей данных в структуре и массивный метод вычисления в нем - я предполагаю, что 16 байт будет скопирован в стек, а код метода будет храниться где-то в другом месте и будет использоваться для всех экземпляров структура.

Правильны ли эти презумпции?

Ответ 1

MSIL хранится в разделе кода сборки, который Windows отображает в памяти при первой загрузке сборки. Когда метод сначала выполняется, JIT скомпилирует MSIL с кодом x86/x64. Когда метод скомпилирован в память, он обычно остается там и будет использоваться всеми потоками. Существуют некоторые обстоятельства, при которых несколько приложений AppDomains заставят MSIL скомпилироваться второй раз, но это редко.

Ответ 3

Да. В основном методы управляются отдельно в некоторой структуре, которая, в основном, не так хорошо известна и документирована (как никогда ее не требуется).

он также сохраняется как байт-код, скомпилированный, также может быть встроен в другие методы.

Строка известна по типу, поэтому вызовы методов могут быть правильно маршрутизированы.