新聞中心
這篇文章主要為大家展示了C#迭代器和Unity協(xié)程是什么,內(nèi)容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

站在用戶的角度思考問題,與客戶深入溝通,找到定州網(wǎng)站設(shè)計與定州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋定州地區(qū)。
1、C#迭代器
1.1、IEnumerable和IEnumerator
C#中的迭代器封裝在IEnumerable和IEnumerator和他們的泛型接口中。
IEnumerable:定義了一個可以獲取IEnumerator的方法---GetEnumerator()。
//IEnumerable的代碼實現(xiàn)
public interface IEnumerable
{
IEnumerator GetEnumerator();
}IEnumerator:則在目標序列上實現(xiàn)循環(huán)迭代,直到不再需要數(shù)據(jù)。常見的foreach循環(huán)就是使用這個接口
//IEnumerator的代碼實現(xiàn)
public interface IEnumerator
{
///
/// 獲取當前的項(只讀屬性)
///
object Current { get; }
///
/// 將游標的內(nèi)部位置向前移動
///
/// 是否成功
bool MoveNext();
///
/// 將游標重置到第一個成員前面
///
void Reset();
}但是為什么會有兩個接口呢?為什么不直接讓IEnumerable實現(xiàn)所有方法呢?
為了不違背單一職責原則。如果有幾個嵌套的foreach循環(huán),那么彼此就可能會收到影響了。
1.2、迭代器使用
C#中的數(shù)組和集合都是繼承了IEnumerable接口的,所以我們可以直接使用。
static void Main(string[] args)
{
int[] arr = new int[5] { 12, 65, 749, 16, 49 };
//foreach (int item in arr)
//{
// Console.WriteLine(item);
//}
#region 和上面的foreach相同
IEnumerator e = arr.GetEnumerator(); //獲取要迭代的對象
while (e.MoveNext()) //一個一個的讀取元素,讀取完會返回false
{
Console.WriteLine(e.Current); //輸出讀取內(nèi)容
}
#endregion
}自定義類中使用迭代器。
////// 動物園類,里面有很多動物 /// public class Zoo : IEnumerable { Animal[] animals = new Animal[3]; public Zoo() { animals[0] = new Animal("張三"); animals[1] = new Animal("李四"); animals[2] = new Animal("趙五"); } public IEnumerator GetEnumerator() { return this.animals.GetEnumerator(); } } ////// 動物類,每個動物有其名字 /// public class Animal { private string name; public string Name { get { return name; } } public Animal(string name) { this.name = name; } } static void Main(string[] args) { Zoo zoo = new Zoo(); //可以直接使用foreach迭代 foreach (Animal animal in zoo) { Console.WriteLine(animal.Name); } Console.ReadKey(); }
2、Unity中的協(xié)程
2.1、進程 線程 協(xié)程介紹
進程:
- 進程有自己獨立的堆和棧,既不共享堆,亦不共享棧,進程由操作系統(tǒng)調(diào)度。
- 進程是有獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動。
線程:
- 線程有自己獨立的棧和共享的堆,共享堆,不共享棧。線程由操作系統(tǒng)調(diào)度。
- 一個進程可以包含多個線程。
- 線程異步運行,多處理器中多個線程可同時運行。
協(xié)程:
- 協(xié)程共享堆,不共享棧,協(xié)程由程序員在協(xié)程的代碼里顯示調(diào)度。
- 協(xié)程執(zhí)行在游戲主線程上,同一時間只能執(zhí)行一個協(xié)程。
- 線程避免了無意義的調(diào)度,提高了性能,但需要程序員自己承擔調(diào)度責任。
2.2、協(xié)程使用
Unity的協(xié)程系統(tǒng)是基于C#的一個簡單而強大的接口 ,IEnumerator。
以上就是關(guān)于C#迭代器和Unity協(xié)程是什么的內(nèi)容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。
文章題目:C#迭代器和Unity協(xié)程是什么
標題鏈接:http://www.dlmjj.cn/article/jpooii.html


咨詢
建站咨詢
