91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現迭代器方法

發布時間:2022-03-07 09:39:31 來源:億速云 閱讀:183 作者:小新 欄目:開發技術

這篇文章主要介紹C#如何實現迭代器方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1.迭代器方法

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

迭代器用法法介紹。

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

 yield return 語句介紹:

  保持代碼的當前位置,在下一次調用迭代器方法時執行。

C#如何實現迭代器方法

 迭代方法在使用過程中左右步驟對應。yield return語句主要是返回一個結果作為函數調用的結果。并記錄當前運行位置,當下次函數被調用時,在當前位置執行這個函數。在迭代塊中除了yield return外,不允許出現普通的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關系到你迭代對象yield return返回值的類型。如果你定義IEnumerable<int>那么你返回的值是int類型,如果你定義IEnumerable那么你的返回值是string類型以此類推。如果你想以某個條件結束方法。可以使用外面的條件如上圖所示。也可以使用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.手動實現迭代器方法

首先是通過使用接口IEnumerable的方式,然后編寫IEnumerator GetEnumerator()的方式。在代碼中控制索引位置,和循環次數。如果索引位置出錯則使用代碼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;
                }
            }
             
        }
    }
}

以上是“C#如何實現迭代器方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊金霍洛旗| 昆明市| 申扎县| 阿拉善右旗| 鄂托克前旗| 宜兰市| 青海省| 慈溪市| 淅川县| 洪洞县| 沽源县| 孟连| 昌都县| 隆安县| 虹口区| 明水县| 阿克苏市| 高青县| 石泉县| 卫辉市| 桦川县| 汉源县| 伽师县| 东阳市| 阿坝县| 广南县| 阿克陶县| 朝阳市| 南康市| 封开县| 白河县| 米泉市| 潼关县| 民和| 车险| 台安县| 滕州市| 辽阳县| 博野县| 梓潼县| 漳浦县|