IEnumerator、IEnumerable 使用 for、foreach 的差別
Q:實作發現 IEnumerable 能使用 foreach、不能使用 for,IEnumerator 能使用 for、不能使用 foreach,這是為什麼。
A:IEnumerator 是無法使用 for,foreach 就是跑迭代器。需要有 index 的概念建議使用 for。
Aforeach 裡面的 List 陣列有改變的話,會出現錯誤。
C# 迭代器延遲執行
A:使用 LinQ 時需要注意到延遲執行的部分。
是否能夠使用迭代器製作 C# List
A:可以,可是想自己寫 yield return
是無法的這是 C# 內建的。
C# 底層都有繼承 IEnumerable 那是否不需要迭代器模式了?
A:實作不太可能,因為會為了做而做,除非是這個類別很特別才需要。
Unity 使用 for、foreach 的效能,使用 foreach 會比較耗效能嗎?
A:這是 Unity 舊版 bug。一般用法還好除非是在 Update 使用 foreach 才會有明顯的差異。
A:因為 Unity C# 與 MS C# 不太一樣,在使用 Unity 物件時不要使用 ?.
的方式。
A?.B();
更理解迭代器運作方式
可以先理解 LinQ 運作方式,就可以知道內部迭代跟外部的差異。
再來可以理解 C# IEnumerator、IEnumerable,要搭配 for、foreach,並且搭配 yield return,就可以理解 yield return 在迭代器的概念。
最後實作 Unity 協成(Coroutine),寫一個方法 to IEnumerator 並且使用 StarCoroutine,並且不使用 UnityEngine。
IEnumerable 在方法上使用是什麼情況會使用到?
A:延遲執行,可以在需要使用的時候再呼叫就可。
Q:假如不懂的話是不是會是一個坑?
A:非同步執行或感受非同步執行時使用。希望執行這行程式的時候,不要卡死在這邊,延遲執行可以等資料匯入後再執行。不懂的人使用確實會是一個坑。