c# 数组迭代器简介 基于unity2018.3.8f1(一)
2020-12-13 02:36
标签:接口 osi mon mat 迭代器 bool 设计模式 object dex 简介 迭代器模式是设计模式中的一种,能够获得序列中的元素,不关心其具体内容。这也是LINQ的核心模式。 具体实现 先创建一个单体的数据类 Car 代码如下: 我们利用IEnumerable接口去封装一个Car数组 代码如下 接下来我们实现GetEnumerator函数里面的内容 新建CarIterator类,继承IEnumerator 并在MoveNext()函数中 和 Reset() 函数中进行修改 代码如下 并把IEnumerable接口函数替换成 简单实现调用下 调用结果 c# 数组迭代器简介 基于unity2018.3.8f1(一) 标签:接口 osi mon mat 迭代器 bool 设计模式 object dex 原文地址:https://www.cnblogs.com/lihengbk/p/11044262.htmlpublic class Car
{
public string carName;
public int carPrice;
public Car(string carName, int carPrice)
{
this.carName = carName;
this.carPrice = carPrice;
}
}
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();
}
}
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;
}
}
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(一)
文章链接:http://soscw.com/essay/25926.html