Iterator
What is iterator?
Iterator is a method or function implementation which implements the iterative features for objects and its return type must be IEnumerable type.
We can implement iterators in C# read-only property also (only with get )
In each iteration this method or properties returns one element with the help of Yield return statement
What is yield
Yield is a keyword which is introduced in Csharp and VB.Net to implement iterator .yield is working like return statement in functions but it will call more than one time like loop.
yield gives enumeration properties implicitly for object(i.e means explicitly no need to implement IEnumerator) .
Yield was implemented in C-sharp and vb.net with different keyword
Yield return <expression>; in C#
We used yield return statement in iterator
to return each element
Example
static void Main(string[] args)
{
foreach (var item in getno())
{
Console.WriteLine(item);
}
}
public static IEnumerable<string> getno()
{
yield return "2";
yield return "10";
yield return "120";
yield return "102";
}
Can I use yield statement in exception try catch block?
By Microsoft definition
Yield can be placed in try-finally block, but cannot be in try-catch.
Yield have another key word break, it is used to break present iteration of iterator
Example
public class Employeelist
{
public System.Collections.Generic.IEnumerable<Employee> Nexemployee
{
get
{
yield return new Employee { Name = "elan", Experience = 12 };
yield return new Employee { Name = "bond", Experience = 25 };
yield return new Employee { Name = "larry ", Experience = 2, };
yield return new Employee { Name = "amanda", Experience = 3 };
}
}
}
public class Employee
{
public String Name { get; set; }
public int Experience { get; set; }
}
class Program
{
static void Main(string[] args)
{
var theemp = new Employeelist();
foreach (Employee empitem in theemp.Nexemployee)
Console.WriteLine(empitem.Name + "
" + empitem.Experience.ToString());
}
}
Reference
http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx
Comments