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的主要内容,如果未能解决你的问题,请参考以下文章