One interesting new feature of the C# 2.0 is the "yield" keyword. Basically it is used to iterate through objects returned by a method. It creates a state engine in IL so you can create methods that retain their state and dont have to go through the pain of maintaining state in your code.
Here is a simple example that demonstrates how yield return can be used to maintain state in a method. Every time you call GetInt() you will receive a new incremented integer.
public static IEnumerable<int> GetInt() { for (int i = 0; i < 5; i++) yield return i; } |
Here's the implementation.
class Program { static void Main(string[] args) { foreach (int i in GetInt()) Console.WriteLine("Got " + i.ToString()); }
public static IEnumerable<int> GetInt() { for (int i = 0; i < 5; i++) yield return i; } } |
Usually, the "yield" keyword will be useful when you implement the GetEnumerator() method of the IEnumerable interface
class TestClass: IEnumerable<int> { #region IEnumerable<int> Members
public IEnumerator<int> GetEnumerator() { for (int i = 0; i < 5; i++) yield return i; }
#endregion
#region IEnumerable Members
IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }
#endregion
} |
Hopefully, this brief sample has helped you understand the new "yield" keyword and how it can be used.
Until next time,
Happy coding