我在我的dll文件裏面弄亂了我的IL代碼(只是爲了學習目的)。我想看看會發生什麼,如果我注入自己的IL代碼,例如...我扔了一個箱子電話:IL_9999: box !T
。我想知道是否偏移值實際上很重要,雖然...我是否通過將IL代碼編織爲IL_9999而傷害了我的應用程序的性能?
IL偏移量爲9999的性能價格比IL偏移量爲1000還要多嗎?我的猜測是它沒有因爲編譯器本身,而爲了去,跳過偏移:如果我的IL的9999偏移扔進這些IL的中間偏移
IL_000d: ldc.i4.3
IL_000e: box [mscorlib]System.Int32
IL_0013: call instance int32 [mscorlib]System.Enum::CompareTo(object)
IL_0018: call void [mscorlib]System.Console::WriteLine(int32)
IL_001d: nop
而且,它傷害我的應用價值低得多的呼叫?
這沒有任何意義,IL_000d:註釋是反彙編器顯示的內容。當你編寫你自己的IL或者使用Reflection時,你實際上並沒有自己編寫它。或者使用Reflection.Emit –
@HansPassant:對不起,如果我不清楚......我使用反彙編程序來到我的DLL的IL。那就是我在玩的地方。 –
@ m-y但反彙編器通常不會讓你修改代碼。 – svick