如何設置.maxstack指令與ILGenerator?如何使用ILGenerator設置「.maxstack」
例如,一個典型的setter方法具有的.maxstack :
.maxstack 2 // The evaluation stack has a max size of 2
IL_0000: ldarg.0 // the current instance (this)
IL_0001: ldarg.1 // new value
IL_0002: stfld Int32 _someField // stores the new value on _someField
IL_0007: ret // Return to caller
這是可能的元數據集合與ILGenerator
,因爲它實際上提供DefineLabel和DeclareLocal,那麼爲什麼沒有提供SetMaxStack(short/int)
方法或類似的東西?
如果我無法設置此元數據,Reflecion.Emit
如何確定堆棧的大小?它是否將其設置爲最大可能值?或者,也許堆棧在運行時自動擴展?
它不相信你做得對。 DeclareLocal()總是正確的。 –