最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#迭代器方法介紹

 更新時間:2022年03月06日 17:06:33   作者:Unity使人頭禿~~~  
這篇文章主要介紹了C#迭代器方法,可以使用foreach循環(huán)語句進行的迭代的方法,稱為可迭代方法,或者迭代器方法,方法操作,想了解更多內(nèi)容得小伙伴可以學(xué)習(xí)下面文章內(nèi)容,希望給你的學(xué)習(xí)帶來幫助

1.迭代器方法

可以使用foreach循環(huán)語句進行的迭代的方法,稱為可迭代方法,或者迭代器方法。

迭代器用法法介紹。

  迭代器用于依次返回每個元素,一般用于foreach循環(huán)語句。迭代器方法需要使用yield return語句。

 yield return 語句介紹:

  保持代碼的當(dāng)前位置,在下一次調(diào)用迭代器方法時執(zhí)行。

 迭代方法在使用過程中左右步驟對應(yīng)。yield return語句主要是返回一個結(jié)果作為函數(shù)調(diào)用的結(jié)果。并記錄當(dāng)前運行位置,當(dāng)下次函數(shù)被調(diào)用時,在當(dāng)前位置執(zhí)行這個函數(shù)。在迭代塊中除了yield return外,不允許出現(xiàn)普通的return語句。

迭代方法使用的命名空間為using System.Collections.Generic;

下面代碼為迭代器使用的具體代碼:

class Program
{
? ? public static IEnumerable<int> Fibs()
? ? {
? ? ? ? int f1 = 1, f2 = 2;
? ? ? ? while (true)
? ? ? ? {
? ? ? ? ? ? yield return f1;
? ? ? ? ? ? yield return f2;
? ? ? ? ? ? f1 += f2;
? ? ? ? ? ? f2 += f1;
? ? ? ? }
? ? }
? ? static void Main(string[] args)
? ? {
? ? ? ? foreach (int i in Fibs())
? ? ? ? ? ? if (i < 20)
? ? ? ? ? ? ? ? Console.WriteLine("{0}", i);
?
? ? ? ? ? ? else
? ? ? ? ? ? ? ? break;
? ? ? ? Console.ReadKey();
? ? }?
}

 IEnumerable是泛型定義的里面的int關(guān)系到你迭代對象yield return返回值的類型。如果你定義IEnumerable<int>那么你返回的值是int類型,如果你定義IEnumerable那么你的返回值是string類型以此類推。如果你想以某個條件結(jié)束方法??梢允褂猛饷娴臈l件如上圖所示。也可以使用yield break。

class Program
{
? ? public static IEnumerable Fibs()
? ? {
? ? ? ? string f1 = "1", f2 = "2";
? ? ? ? while (true)
? ? ? ? {
? ? ? ? ? ? yield return f1;
? ? ? ? ? ? yield return f2;
? ? ? ? ? ? f1 += f2;
? ? ? ? ? ? f2 += f1;
? ? ? ? ? ? if (f1.Length > 8)
? ? ? ? ? ? ? ? yield break;
? ? ? ? }
? ? }
?
? ? static void Main(string[] args)
? ? {
? ? ? ? foreach (string i in Fibs())
? ? ? ? ? ? ?
? ? ? ? ? ? ? ? Console.WriteLine("{0}", i);
? ? ? ? Console.ReadKey();
? ? }?
}

2.手動實現(xiàn)迭代器方法

首先是通過使用接口IEnumerable的方式,然后編寫IEnumerator GetEnumerator()的方式。在代碼中控制索引位置,和循環(huán)次數(shù)。如果索引位置出錯則使用代碼throw new NotImplementedException()報錯。

using System;
using System.Collections;
using System.Collections.Generic;
?
?
namespace test02
{
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? object [] e = new object[5] { 1, 2, 3, 4, 5 };
? ? ? ? ? ? Itear01 s = new Itear01(e,2);
? ? ? ? ? ? foreach (object i in s)
? ? ? ? ? ? ? ? ? ? Console.WriteLine("{0}", i);
? ? ? ? ? ? Console.ReadKey();
? ? ? ? }?
? ? }
?
? ? public class Itear01 : IEnumerable
? ? {
? ? ? ? object[] values;
? ? ? ? int StartPoint=-1;
? ? ? ? int current=0;
? ? ? ? public Itear01(object[] values,int StartPoint)
? ? ? ? {
? ? ? ? ? ? this.values = values;
? ? ? ? ? ? this.StartPoint = StartPoint;
? ? ? ? }
? ? ? ? public IEnumerator GetEnumerator()
? ? ? ? {
? ? ? ? ? ? if(this.StartPoint==-1)
? ? ? ? ? ? ? ? throw new NotImplementedException();
? ? ? ? ? ? while(true)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? yield return this.values[StartPoint];
? ? ? ? ? ? ? ? StartPoint = (StartPoint + 1) % values.Length;
? ? ? ? ? ? ? ? current++;
? ? ? ? ? ? ? ? if (current == values.Length)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? ?
? ? ? ? }
? ? }
}

到此這篇關(guān)于C#迭代器方法介紹的文章就介紹到這了,更多相關(guān)C#迭代器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C# 對XML操作入門實例

    C# 對XML操作入門實例

    C# 對XML操作入門實例,需要的朋友可以參考一下
    2013-04-04
  • C# 利用PdfSharp生成Pdf文件的示例

    C# 利用PdfSharp生成Pdf文件的示例

    這篇文章主要介紹了C# 利用PdfSharp生成Pdf文件的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • C# Base64編碼函數(shù)

    C# Base64編碼函數(shù)

    Base64編碼的思想是是采用64個基本的ASCII碼字符對數(shù)據(jù)進行重新編碼。它將需要編碼的數(shù)據(jù)拆分成字節(jié)數(shù)組。
    2009-06-06
  • C#生成隨機字符串的實例

    C#生成隨機字符串的實例

    本文介紹了“C#生成隨機字符串的實例”,需要的朋友可以參考一下
    2013-03-03
  • c#中虛函數(shù)的相關(guān)使用方法

    c#中虛函數(shù)的相關(guān)使用方法

    若一個實例方法聲明前帶有virtual關(guān)鍵字,那么這個方法就是虛方法。
    2013-02-02
  • C#?實例解釋面向?qū)ο缶幊讨械膯我还δ茉瓌t(示例代碼)

    C#?實例解釋面向?qū)ο缶幊讨械膯我还δ茉瓌t(示例代碼)

    本文我介紹了?SOLID?原則中的單一功能原則(single-responsibility?principle),并通過?C#?代碼示例簡明地詮釋了它的含意和實現(xiàn),對C#?面向?qū)ο缶幊淘瓌t感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • C#獲取程序文件相關(guān)信息的方法

    C#獲取程序文件相關(guān)信息的方法

    這篇文章主要介紹了C#獲取程序文件相關(guān)信息的方法,可實現(xiàn)獲取程序版本號、版權(quán)聲明、程序文本信息等,需要的朋友可以參考下
    2014-09-09
  • Winform啟動另一個項目傳值的方法

    Winform啟動另一個項目傳值的方法

    這篇文章主要介紹了Winform啟動另一個項目傳值的方法,通過調(diào)用進程來實現(xiàn)項目之間的傳值,需要的朋友可以參考下
    2014-11-11
  • C#引用訪問權(quán)限分析

    C#引用訪問權(quán)限分析

    這篇文章主要介紹了C#引用訪問權(quán)限問題,對比C#與Java實例分析了C#在引入引用訪問權(quán)限特性之后的具體用法,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • C#生成防偽碼的思路及源碼分享

    C#生成防偽碼的思路及源碼分享

    生成防偽碼其實挺簡單,但是如果要考慮效率和不重復(fù)的話,就需要稍微動動腦子了,下面我來說說我的思路及源碼
    2014-06-06

最新評論

福贡县| 东莞市| 神农架林区| 青州市| 滕州市| 福州市| 道孚县| 神木县| 芜湖县| 乌兰县| 称多县| 成武县| 新丰县| 巫溪县| 金塔县| 沂水县| 九龙城区| 昌宁县| 察哈| 永修县| 临漳县| 瓮安县| 宜城市| 剑川县| 兰溪市| 奎屯市| 磐安县| 五家渠市| 新兴县| 铜川市| 淮阳县| 历史| 开封市| 龙陵县| 行唐县| 祁阳县| 平顶山市| 鄄城县| 贵德县| 丹阳市| 凌源市|