[C# 2.0] yeild return用法教學

  • 545
  • 0
  • 2016-03-05

參考文章:http://limitedcode.blogspot.tw/2014/07/c-yeild.html

首先在最近這一陣子都沒更新是因為最近開始上了TDD課程,然後91老師也有出功課,但TDD我真心覺得上的很值得,雖然目前才過第一週,但透過這次回家作業又讓我學習了不少,真的很感謝,不知道在未來是不是也有能力到達老師所待的公司那邊去學習成長之類的,哈,但我程度應該還差得遠呢!!

這是這次TDD回家作業,我自己先放上,改天再把它優化更好,我也想嘗試寫出老師指導所寫出的Code,因為以前都沒機會接觸過

https://github.com/Alan-Lun/TDD_Day1_HomeWork


這次是講 yeild return 部分,這是我在這次HomeWork裡面從老師身上搞懂的其中一項

從書上翻成中文的話,它叫做

反覆運算器:相同型態的值的有序序列的一段程式

參考文章資料,也說明了一件事情

    1.回傳類型必須為IEnumerable, IEnumerable<T>, IEnumerator, IEnumerator<T>
    2.不可包含任何 ref 與 out 參數
    3.匿名方法與unsafe區塊不可使用yield

如果是以我自己來翻譯的話,他就是只能在迴圈裡跑的List.Add(),但是他不是Add進我們new的List,而是針對回傳做List加入,並且他也提供了yield break 也可以直接跳離

接著直接看Code和最後結果,其實會滿容易瞭解的

嘗試去下中斷點去看他的動作會發現還滿特別的,他一直回傳回去後又回來原來的Function再繼續跑

你也可以改變Console.WriteLine()的位置放進去,你也會發現很神奇的事情

 

最後結果,想當然就是ACD囉

如果是把Console.WriteLine()放進去迴圈裡,你可看他foreach運作時,會是一直回去那function 繼續跑回資料一筆一筆這樣帶回來,所以我覺得還滿特別的
 

GitHub: https://github.com/Alan-Lun/Basic_Cherp/blob/master/BasicCSherp_Console/yieldreturn.cs