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

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

IEnumerable<T>、Task<T> 和 IDisposable 是否在 C#

IEnumerable<T>、Task<T> 和 IDisposable 是否在 C#

C#
慕村9548890 2021-09-19 16:28:10
我自己多次問過這個問題。我試圖找到一些關于此的博客文章,甚至深入研究 Roslyn 源代碼,但沒有找到任何完整的答案?;旧?,使用一些現代 C# 語言功能,編譯器將采用一些語法糖并將其轉換為更底層的 C# 代碼。其中的一些例子是:using()生成一個try-finally肯定處置一個IDisposable返回IEnumerable<T>with 的yield return函數將該函數轉換為作為狀態機實現的迭代器標記為 的函數async必須返回Task<T>(或類似的)并且也將變成狀態機,可以從引擎蓋下的程序事件循環重新進入所以,這些都是很好的特性,但是編譯器總是強制執行特定的類型IEnumerable<T>,Task<T>和IDisposable. 這些類型是否以某種方式融入了編譯器?即使mscorlib只是提供通用功能的普通 C# 代碼,編譯器是否也以某種方式綁定到標準庫?我無法想象,因為編程語言是如此抽象和通用。正如我所見await,只要類型具有GetAwaiter擴展方法,就可以使用-ing 任何內容。這對我來說聽起來更抽象。編輯另外,如果有人能指出我在編譯器中指定所需預定義類型的源代碼,請告訴我!
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 307 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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