亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C#中的內聯函數?

C#中的內聯函數?

C#
素胚勾勒不出你 2019-07-23 19:28:47
C#中的內聯函數?你如何在C#中做“內聯函數”?我認為我不理解這個概念。他們喜歡匿名方法嗎?像lambda函數?注意:答案幾乎完全涉及內聯函數的能力,即“用被調用者的主體替換函數調用站點的手動或編譯器優化”。如果您對匿名(也稱為lambda)函數感興趣,請參閱@ jalf的答案或者每個人都在說什么'Lambda'?。
查看完整描述

3 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

最后在.NET 4.5中,CLR允許使用值提示/建議1方法內聯MethodImplOptions.AggressiveInlining。它也可以在Mono的后備箱中使用(今天提交)。


// The full attribute usage is in mscorlib.dll,

// so should not need to include extra references

using System.Runtime.CompilerServices; 


...


[MethodImpl(MethodImplOptions.AggressiveInlining)]

void MyMethod(...)

1。此前使用的是“force”。由于有一些downvotes,我會試著澄清這個詞。正如在評論和文檔中一樣,The method should be inlined if possible.特別是考慮到Mono(開放),考慮內聯或更一般的(如虛函數),存在一些單特定的技術限制。總的來說,是的,這是對編譯器的暗示,但我想這就是要求的。


查看完整回答
反對 回復 2019-07-23
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

內聯方法只是一種編譯器優化,其中函數的代碼被卷入調用者。

在C#中沒有任何機制可以做到這一點,并且它們在支持它們的語言中被謹慎使用 - 如果你不知道為什么它們應該被用在某個地方,它們就不應該被使用。

編輯:為了澄清,有兩個主要原因需要謹慎使用:

  1. 在沒有必要的情況下,通過內聯使用大量二進制文件很容易

  2. 從性能的角度來看,編譯器往往比你應該知道更好

最好不要管它,讓編譯器完成它的工作,然后分析并確定內聯是否是最適合你的解決方案。當然,有些事情是有意義的內聯(特別是數學運算符),但讓編譯器處理它通常是最好的做法。


查看完整回答
反對 回復 2019-07-23
  • 3 回答
  • 0 關注
  • 1706 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號