c# 数组迭代器简介 基于unity2018.3.8f1

Posted lihengbk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 数组迭代器简介 基于unity2018.3.8f1相关的知识,希望对你有一定的参考价值。

简介

  迭代器模式是设计模式中的一种,能够获得序列中的元素,不关心其具体内容。这也是LINQ的核心模式。

具体实现

  先创建一个单体的数据类 Car 代码如下:

public class Car

    public string carName;
    public int carPrice;
    public Car(string carName, int carPrice)
    
        this.carName = carName;
        this.carPrice = carPrice;
    

  我们利用IEnumerable接口去封装一个Car数组 代码如下

public class CardList : IEnumerable

    Car[] carList;

    public CardList(Car[] carList)
    
        this.carList = carList;
    

    public int Count
    
        get
        
            return carList.Length;
        
    

    public Car this[int index]
    
        get
        
            return carList[index];
        
    

    public IEnumerator GetEnumerator()
    
        throw new System.NotImplementedException();
    

  接下来我们实现GetEnumerator函数里面的内容 新建CarIterator类,继承IEnumerator 并在MoveNext()函数中 和 Reset() 函数中进行修改 代码如下

public class CarIterator : IEnumerator

    private readonly CardList cardList;
    private int position = -1;

    public object Current
    
        get
        
            try
            
                return cardList[position];
            
            catch
            
                throw new Exception();
            
        
    

    public CarIterator(CardList cardList)
    
        this.cardList = cardList;
    

    public bool MoveNext()
    
        position++;
        return position < cardList.Count;
    

    public void Reset()
    
        position = -1;
    

  并把IEnumerable接口函数替换成

 public IEnumerator GetEnumerator()
    
        return new CarIterator(this);
    

  简单实现调用下

public class GameStart : MonoBehaviour

    private void Start()
    
        Car[] cars = new Car[]
        
            new Car("天斯",22),
            new Car("劳赖",33)
        ;
        CardList cardList = new CardList(cars);
        foreach (Car item in cardList)
        
            Debug.LogFormat("0:1", item.carName, item.carPrice);
        
    

调用结果 

技术图片

 

以上是关于c# 数组迭代器简介 基于unity2018.3.8f1的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 从字符串数组制作类似枚举的 Unity 检查器下拉菜单?

迭代器,生成器,面向过程 2018-3-30

C#中的枚举器和迭代器

C#迭代器实现

Unity3D的协程1——初步理解背后的迭代器

C#知识点-枚举器和迭代器