Power of yield
当我们以默认的顺序访问数组的时候,我们可以使用foreach语句。
但如果我们想以倒序的方式访问数组时,我有了点疑惑,当然我们可以使用循环(in reverse order),
或者调用数组的Reverse方法Array.Reverse()。现在我建议使用另一种方式去倒序访问数组
using System;
using System.Collections.Generic;
class a
{
static void Main()
{
Console.WriteLine("Normal order:");
int[] intarray = new int[] { 1,2,3,4,5};
DisplayArray<int>(intarray);
Console.WriteLine("Reverse order:");
DisplayArray<int>(Reverse<int>(intarray));
Console.Read();
}
static void DisplayArray<T>(IEnumerable<T> displayedArray)
{
foreach (T item in displayedArray)
{
Console.WriteLine("{0}",item);
}
}
static IEnumerable<T> Reverse<T>(T[] originalArray)
{
for (int i = originalArray.Length - 1; i >= 0; i--)
{
yield return originalArray[i];
}
}
}
using System.Collections.Generic;
class a
{
static void Main()
{
Console.WriteLine("Normal order:");
int[] intarray = new int[] { 1,2,3,4,5};
DisplayArray<int>(intarray);
Console.WriteLine("Reverse order:");
DisplayArray<int>(Reverse<int>(intarray));
Console.Read();
}
static void DisplayArray<T>(IEnumerable<T> displayedArray)
{
foreach (T item in displayedArray)
{
Console.WriteLine("{0}",item);
}
}
static IEnumerable<T> Reverse<T>(T[] originalArray)
{
for (int i = originalArray.Length - 1; i >= 0; i--)
{
yield return originalArray[i];
}
}
}