C#筆記 – 迭代器
如果某個類型實現了IEnumerable接口,就代表它是可迭代的,可以把迭代器想象成數據庫的游標,迭代器只能在序列中向前移動,而且對於同一序列可能同時存在多個迭代器操作。迭代器模式一個重要方面是,不用一次返回所有數據——調用代碼一次只需獲取一個元素。
如果某個類型實現了IEnumerable接口,就代表它是可迭代的,可以把迭代器想象成數據庫的游標,迭代器只能在序列中向前移動,而且對於同一序列可能同時存在多個迭代器操作。迭代器模式一個重要方面是,不用一次返回所有數據——調用代碼一次只需獲取一個元素。
async關鍵字使編譯器將方法代碼轉換成實現了「狀態機」的一個類型,這令該方法像迭代器一樣,不需要一直執行到結束才返回。實際上,一旦把方法標記為async,編譯器自動生成代碼,在狀態機開始執行時創建一個Task對象。
線程的目的是對CPU進行虛擬化,Windows為每個進程提供了該進程專用的線程(功能相當於一個CPU)。每個線程都有線程內核對象、線程環境塊、用戶模式棧、內核模式棧、DLL線程連接/分離通知。
AppDomain是一組程序集的邏輯容器,讓一個AppDomain的代碼不能直接訪問另一個AppDomain的代碼創建的對象。CLR COM服務器初始化時會創建一個AppDomain,進程終止時會將其銷毀。
CLR支持一維、多維、交錯數組,為了符合CLS的要求,所有數組都需要是0基數組(起始索引為0)。所有數組類型隱式從System.Array抽象類派生,為引用類型,在托管堆上分配內存