2
A
回答
7
C#語言不會內聯,但.NET CLR JIT編譯器可以。
虛擬化可能在密封類中是內聯的,但我不確定非密封類。我會假設沒有。
JIT在執行代碼之前進行優化,當函數被首次調用時。因爲在JIT開始工作之前,您沒有任何代碼可以執行。 :P JIT只在第一次調用函數時發生,而不是在每次調用函數時發生。
還要注意內聯只能在程序集(DLL)中完成。 JIT編譯器不會複製另一個程序集中的代碼以將其內聯到此程序集的代碼中。
7
C#不支持明確的內聯。 JIT編譯器可以在優化的同時在舞臺後面進行一些內聯。
4
C#編譯器本身不會執行內聯(您可以通過在Reflector中打開程序集來進行驗證)。 CLR的JIT編譯器確實內聯了,關於這個主題,這裏是one blog post(還有更多)。
請注意,一般而言,.NET編譯器無法跨越DLL邊界進行內聯,因爲在編譯依賴於DLL的代碼後,DLL可能會更改。因此在運行時進行內聯是有意義的。
相關問題
- 1. 運行內聯錯誤:: C
- 2. 內聯C#代碼應該只在點擊時運行ASP.NET
- 3. 在運行時C結構內省
- 4. 在Mediawiki上運行SQL內聯查詢
- 5. 替代在C#中內聯?
- 6. 在C/C++中使用內聯彙編
- 7. c#在運行時打開文件關聯
- 8. 內聯重載運算符C++
- 9. JPA在運行時級聯選項
- 10. Java Swing中級聯運行時錯誤
- 11. C++程序在運行時
- 12. 在運行時確定(C#)
- 13. 使用C#在運行時
- 14. 在Objective-C中導入運行時庫
- 15. 「內聯C」 -question
- 16. C#在運行時添加的app.config設置在內存
- 17. 從內部運行csh c
- 18. c中的內聯函數
- 19. C++中的內聯函數
- 20. C++中的內聯函數
- 21. C中的內聯擴展#
- 22. C#通行證泛型在運行時
- 23. 從內存中運行pyc數據C
- 24. 在C++中的內聯throw()方法
- 25. JavaScript內聯函數就像在C++中
- 26. 函數在C++中的內聯要求
- 27. 爲什麼我在c中使用堆內存時出現運行時錯誤?
- 28. Java,C++,Python和ObjC的聯機編譯器/運行時?
- 29. C#Winform DataGridView內聯添加新行
- 30. 在設計時在winforms文本框中進行內聯編輯