C#中yield用法使用說(shuō)明
在迭代器塊中用于向枚舉數(shù)對(duì)象提供值或發(fā)出迭代結(jié)束信號(hào)。它的形式為下列之一:
yield return <expression>;
yield break;
備注:
計(jì)算表達(dá)式并以枚舉數(shù)對(duì)象值的形式返回;expression 必須可以隱式轉(zhuǎn)換為迭代器的 yield 類型。
yield 語(yǔ)句只能出現(xiàn)在 iterator 塊中,該塊可用作方法、運(yùn)算符或訪問(wèn)器的體。這類方法、運(yùn)算符或訪問(wèn)器的體受以下約束的控制:不允許不安全塊。
方法、運(yùn)算符或訪問(wèn)器的參數(shù)不能是 ref 或 out。
yield 語(yǔ)句不能出現(xiàn)在匿名方法中。
當(dāng)和 expression 一起使用時(shí),yield return 語(yǔ)句不能出現(xiàn)在 catch 塊中或含有一個(gè)或多個(gè) catch 子句的 try 塊中。
yield return 提供了迭代器一個(gè)比較重要的功能,即取到一個(gè)數(shù)據(jù)后馬上返回該數(shù)據(jù),不需要全部數(shù)據(jù)裝入數(shù)列完畢,這樣有效提高了遍歷效率。
以下是一個(gè)比較特殊的例子:
C# 中yield 的用法代碼引用:
using System;
using System.Collections;
using System.IO;
using Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;
using System.Windows.Forms;
using System.Threading;
namespace test
{
public class Persons : System.Collections.IEnumerable
{
#region IEnumerable 成員
public System.Collections.IEnumerator GetEnumerator()
{
yield return "1";
Thread.Sleep(5000);
yield return "2";
Thread.Sleep(5000);
yield return "3";
Thread.Sleep(5000);
yield return "4";
Thread.Sleep(5000);
yield return "5";
Thread.Sleep(5000);
yield return "6";
}
#endregion
}
class program
{
static void Main()
{
Persons arrPersons = new Persons();
foreach (string s in arrPersons)
{
System.Console.WriteLine(s);
}
System.Console.ReadLine();
}
}
}
每隔5秒鐘, 控制臺(tái)就會(huì)輸出一個(gè)數(shù)據(jù),直到全部數(shù)據(jù)輸入完畢。
以上就是關(guān)于C#中yield用法使用說(shuō)明,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
C# Onnx CenterNet實(shí)現(xiàn)目標(biāo)檢測(cè)的示例詳解
這篇文章主要為大家詳細(xì)介紹了C# Onnx CenterNet實(shí)現(xiàn)目標(biāo)檢測(cè)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
insert語(yǔ)句太長(zhǎng)用StringBuilder優(yōu)化一下
insert語(yǔ)句太長(zhǎng)用StringBuilder優(yōu)化一下,下面是示例代碼,需要的朋友可以研究研究2014-07-07
C#實(shí)現(xiàn)讀取ini配置文件的內(nèi)容
INI就是擴(kuò)展名為"INI"的文件,其實(shí)他本身是個(gè)文本文件,可以用記事本打開(kāi),本文主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)讀取ini配置文件內(nèi)容的方法,需要的小伙伴可以了解下2023-12-12
C#利用delegate實(shí)現(xiàn)Javascript的each方法
這篇文章主要為大家介紹了介紹了C#利用delegate實(shí)現(xiàn)Javascript的each方法,感興趣的朋友可以參考一下2016-01-01
C#客戶端程序調(diào)用外部程序的3種實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C#客戶端程序調(diào)用外部程序的3種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
C#郵件定時(shí)群發(fā)工具Atilia用法實(shí)例
這篇文章主要介紹了C#郵件定時(shí)群發(fā)工具Atilia用法,較為詳細(xì)的分析了Atilia實(shí)現(xiàn)郵件定時(shí)群發(fā)功能的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
在C#中根據(jù)HardwareID獲取驅(qū)動(dòng)程序信息的實(shí)現(xiàn)代碼
這篇文章主要介紹了C#中根據(jù)HardwareID獲取驅(qū)動(dòng)程序信息的實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-12-12
DevExpress之ChartControl的SeriesTemplate實(shí)例
這篇文章主要介紹了DevExpress之ChartControl的SeriesTemplate用法實(shí)例,實(shí)現(xiàn)了餅狀Series百分比顯示的效果,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-10-10

