Допустим, что НОРМАЛЬНО, если i
является локальной переменной, она будет сохранена в стеке. abstract VM .NET является основанной на стеке.
Я добавлю, что на Intel / AMD i
не будет сохранен таким образом :-) Intel / AMD little endian .Так что это будет 00000001 00000000 00000000 00000000
Я немного смешаю ... Теперь ... Язык IL и .NET abstract VM основаны на "чистом" стеке, поэтомуесть стек :-) (но регистров нет, поэтому «чистый») (надеюсь, вы знаете, что такое стек).Когда код вписывается в машинный код компьютера, который вы используете, вероятно, i
будет помещен в регистр или в стек.
Обратите внимание, что в общем это неправильно неправильно неправильносказать, что типы значений (или не ссылочные типы, если вы хотите включить управляемые / неуправляемые указатели / ссылки) сохраняются в стеке и / или в регистрах.Они сохраняются там, где они сохранены.Например, типы значений-членов класса сохраняются с (в) классом (поэтому обычно в куче).Типы значений в функциях yield, в асинхронных функциях, в «нормальных» методах, но на которые ссылаются анонимные функции «типа закрытия», обычно сохраняются где-то в куче.Но все это подробности справочных реализаций.