Yield Keyword in C#



The yield keyword indicates that the method or the accessor containing the keyword is an iterator method/accessor.

using System;
using System.Collections;

namespace CSharpCollection
{
    public class Watch
    {
        internal byte hour, minute;
		internal string name;
    }

	class WatchArray : IEnumerable
	{
		Watch[] RoyalWatches = new Watch[4];
		
		public WatchArray()
		{
			RoyalWatches[0] = new Watch(){hour=12, minute=0, name="HMT"};
			RoyalWatches[1] = new Watch(){hour=10, minute=10, name="SONATA"};
			RoyalWatches[2] = new Watch(){hour=5, minute=40, name="RADO"};
			RoyalWatches[3] = new Watch(){hour=3, minute=0, name="TITAN"};
		}
		
		/*
		public IEnumerator GetEnumerator()
		{
			foreach(Watch x in RoyalWatches)
				yield return x;
		}
		*/
		
		public IEnumerator GetEnumerator()
		{
			yield return RoyalWatches[0];
			yield return RoyalWatches[1];
			yield return RoyalWatches[2];
			yield return RoyalWatches[3];
		}
	}
	
    class UsingWatchArray
    {
        public static void Main(string[] args)
        {
			WatchArray Watches = new WatchArray();
			
			foreach(Watch x in Watches)
			{
				Console.WriteLine("Time of {0} - {1}:{2}", x.name, x.hour, x.minute);
			}
        }
    }
}

0 Comment's

Comment Form

Submit Comment