我目前正在學習C#的過程,我需要一個解釋。對於更有經驗的人來說,這可能是合乎邏輯和簡單的,但我認爲代碼應該以這種方式工作,而不是。需要關於我的缺少代碼輸出的解釋
我想打印出裏面carArray
所有Car
對象在我Garage
類的foreach使用命名迭代器循環,但是當我通過假值GetTheCars
方法和else塊進入裏面,沒有任何反應。在反向打印數組很好。這是代碼..
主要方法:
static void Main(string[] args)
{
Garage carLot = new Garage();
foreach (Car c in carLot.GetTheCars(false))
{
Console.WriteLine("{0} is going {1} MPH", c.PetName, c.CurrentSpeed);
}
Console.WriteLine();
foreach (Car c in carLot.GetTheCars(true))
{
Console.WriteLine("{0} is going {1} MPH", c.PetName, c.CurrentSpeed);
}
}
車庫類:
class Garage : IEnumerable
{
private Car[] carArray = new Car[4];
public Garage()
{
carArray[0] = new Car("Rusty", 30);
carArray[1] = new Car("Clunker", 55);
carArray[2] = new Car("Zippy", 30);
carArray[3] = new Car("Fred", 30);
}
public IEnumerator GetEnumerator()
{
foreach (Car c in carArray)
{
yield return c;
}
}
public IEnumerable GetTheCars(bool ReturnReversed)
{
if (ReturnReversed)
{
for (int i = carArray.Length; i != 0; i--)
{
yield return carArray[i-1];
}
}
else
{
GetEnumerator();
}
}
else語句裏面的書例如,同樣的代碼寫在GetEnumerator()
方法:
書代碼不同NCE:
else
{
foreach (Car c in carArray)
{
yield return c;
}
}
我想我可以重用在書的前面的例子中使用的方法GetEnumerator()
裏面的代碼,但它打印出什麼。如果有人能解釋我爲什麼我會感激,提前歡呼和感謝!