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

C#中IEnumerable接口介紹并實現(xiàn)自定義集合

 更新時間:2022年04月18日 09:17:26   作者:農(nóng)碼一生  
這篇文章介紹了C#中IEnumerable接口并實現(xiàn)自定義集合,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

簡介

IEnumerable接口是非常的簡單,只包含一個抽象的方法GetEnumerator(),它返回一個可用于循環(huán)訪問集合的IEnumerator對象。對于所有數(shù)組的遍歷,都來自IEnumerable接口。
IEnumerator對象有什么呢?它是一個真正的集合訪問器,沒有它,就不能使用foreach語句遍歷集合或數(shù)組,因為只有IEnumerator對象才能訪問集合中的項,假如連集合中的項都訪問不了,那么進行集合的循環(huán)遍歷是不可能的事情了。

一、foreach在IEnumerable中案例

    public static void Test3()
    {
        MyInt temp = new MyInt();
        foreach (int item in temp)
        Console.WriteLine(item);
    }
    //foreach的必須要實現(xiàn)IEnumerable和IEnumerator的接口
    public class MyInt : IEnumerable
    {
        int[] temp = { 1, 32, 43, 343 };

        public IEnumerator GetEnumerator()
        {
            return temp.GetEnumerator();
        }
    }

相當于下面代碼:

    public static void Test1()
    {
        int[] myArray = { 1, 32, 43, 343 };
        //獲取要遍歷的枚舉數(shù)
        IEnumerator myie = myArray.GetEnumerator();
        //重置當前項,相當于把指針移到初始位置:position = -1; 一開始認識數(shù)組的索引從“0”開始
        myie.Reset();
        //向前移動一個索引,返回Bool類型,判斷是否超出下標
        while (myie.MoveNext())
        {
            int i = (int)myie.Current;//從Object轉成對應類型
            Console.WriteLine("Value: {0}", i);
        }
    }

包含一個屬性兩個方法
MoveNext:把當前的項移動到下一項(類似于索引值),返回一個bool值,這個bool值用來檢查當前項是否超出了枚舉數(shù)的范圍!
Current:獲取當前項的值,返回一個object的類型!
Reset:顧名思義也就是把一些值恢復為默認值,比如把當前項恢復到默認狀態(tài)值!

二、Lamda在IEnumerable中案例

//lamda表達式在數(shù)組中查詢
        public static void Test2()
        {
            List<string> fruits =
              new List<string> { "apple", "passionfruit", "banana", "mango",
                    "orange", "blueberry", "grape", "strawberry" };
            //List<string> query = fruits.Where(fruit => fruit.Length < 6).ToList();
            IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 6);
            foreach (string fruit in query)
                Console.WriteLine(fruit);
        }

只篩選出List中的元素長度小于6的值,然后打印出。

實現(xiàn)自定義集合的 IEnumerable和IEnumerator 接口

namespace ConsoleApplication1
{
    //定義Person類
    public class Person
    {
        //初始化
        public Person(string fName, string lName)
        {
            this.firstName = fName;
            this.lastName = lName;
        }

        //類成員
        public string firstName;
        public string lastName;
    }

    //實現(xiàn)接口
    public class People : IEnumerable
    {
        private Person[] _people;
        public People(Person[] pArray)
        {
            _people = new Person[pArray.Length];

            for (int i = 0; i < pArray.Length; i++)
            {
                _people[i] = pArray[i];
            }
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return (IEnumerator)GetEnumerator();
        }

        //獲取枚舉數(shù)
        public PeopleEnum GetEnumerator()
        {
            return new PeopleEnum(_people);
        }
    }

    public class PeopleEnum : IEnumerator
    {
        public Person[] _people;

        // Enumerators are positioned before the first element
        // until the first MoveNext() call.
        int position = -1;

        public PeopleEnum(Person[] list)
        {
            _people = list;
        }

        //向下推移索引,返回Bool類型值
        public bool MoveNext()
        {
            position++;
            return (position < _people.Length);
        }

        //重置默認索引位置,默認下標為0
        public void Reset()
        {
            position = -1;
        }

        object IEnumerator.Current
        {
            get
            {
                return Current;
            }
        }

        //當前索引值
        public Person Current
        {
            get
            {
                try
                {
                    return _people[position];
                }
                catch (IndexOutOfRangeException)
                {
                    throw new InvalidOperationException();
                }
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //實例化Person
            Person[] peopleArray = new Person[3]
            {
                new Person("John", "Smith"),
                new Person("Jim", "Johnson"),
                new Person("Sue", "Rabon"),
            };

            People peopleList = new People(peopleArray);
            foreach (Person p in peopleList)
                Console.WriteLine(p.firstName + " " + p.lastName);
        }
    }
}

到此這篇關于C#中IEnumerable接口并實現(xiàn)自定義集合的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C#簡單的向量用法實例教程

    C#簡單的向量用法實例教程

    這篇文章主要介紹了C#簡單的向量用法,需要的朋友可以參考下
    2014-07-07
  • C# 正則表達式常用的符號和模式解析(最新推薦)

    C# 正則表達式常用的符號和模式解析(最新推薦)

    這篇文章主要介紹了C# 正則表達式常用的符號和模式解析,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • C#實現(xiàn)高性能Excel百萬數(shù)據(jù)導出優(yōu)化實戰(zhàn)指南

    C#實現(xiàn)高性能Excel百萬數(shù)據(jù)導出優(yōu)化實戰(zhàn)指南

    在日常工作中,Excel數(shù)據(jù)導出是一個常見的需求,然而,當數(shù)據(jù)量較大時,性能和內(nèi)存問題往往會成為限制導出效率的瓶頸,下面我們看看C#如何結合EPPlus,MiniExcel和NPOI提高導出效率吧
    2025-05-05
  • C# 利用Aspose.Words.dll將 Word 轉成PDF

    C# 利用Aspose.Words.dll將 Word 轉成PDF

    關于word轉成pdf的方法網(wǎng)上有很多。大部分需要借助office 2007及以上版本的組件。安裝配置起來比較麻煩。今天偶然得之“Aspose.Words.dll”可以實現(xiàn)
    2013-08-08
  • 基于WPF平臺使用純C#實現(xiàn)動態(tài)處理json字符串

    基于WPF平臺使用純C#實現(xiàn)動態(tài)處理json字符串

    在當今的軟件開發(fā)領域,數(shù)據(jù)的交換與存儲變得愈發(fā)頻繁,JSON作為一種輕量級的數(shù)據(jù)交換格式,在 WPF平臺開發(fā)的桌面應用里,我們常常需要與各種數(shù)據(jù)源交互,動態(tài)處理JSON字符串就成為了一項必備技能,本文將深入探討如何在 WPF 平臺上,僅使用純C#代碼實現(xiàn)對JSON字符串的動態(tài)處理
    2025-01-01
  • C#導出Excel的方法

    C#導出Excel的方法

    本文給大家分享的是基于.net 1.0開發(fā)的程序如何實現(xiàn)導出Excel的方法和示例,使用的是UltraWebGrid自帶導出Excel的控件,非常的簡單實用,有需要的小伙伴可以參考下。
    2015-06-06
  • C#基本語法簡介

    C#基本語法簡介

    本文詳細講解了C#的基本語法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • C#微信公眾號開發(fā)之服務器配置

    C#微信公眾號開發(fā)之服務器配置

    這篇文章介紹了C#微信公眾號開發(fā)之服務器配置,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#實現(xiàn)統(tǒng)計100以內(nèi)所有素數(shù)的個數(shù)

    C#實現(xiàn)統(tǒng)計100以內(nèi)所有素數(shù)的個數(shù)

    這篇文章介紹了C#實現(xiàn)統(tǒng)計100以內(nèi)所有素數(shù)個數(shù)的方法,文中注釋非常詳細,很適合新手學習。對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-11-11
  • C#中事件處理的個人體會

    C#中事件處理的個人體會

    C#中事件處理的個人體會...
    2007-03-03

最新評論

龙州县| 天等县| 平阳县| 永顺县| 韩城市| 介休市| 阜平县| 哈巴河县| 清远市| 彭山县| 丹江口市| 镇康县| 景洪市| 新郑市| 赤峰市| 九龙县| 潮安县| 敦化市| 仲巴县| 济南市| 隆子县| 文安县| 沈丘县| 延长县| 新源县| 扎鲁特旗| 洪湖市| 潼南县| 略阳县| 桃源县| 洱源县| 都兰县| 景宁| 彩票| 陇西县| 新河县| 汝州市| 大新县| 土默特右旗| 衡山县| 侯马市|