Yield Return in C# Made easy
The CSharpNaija bring yet another important keyword in
C# that is, yield return type. In the article below we will learn some
programming techniques that revolve around C# yield return keywords.
What MSDN has about Yield
"The yield keyword signals to the compiler that
the method in which it appears is an iterator block. The compiler generates a
class to implement the behavior that is expressed in the iterator block. In the
iterator block, the yield keyword is used together with the return keyword to
provide a value to the enumerator object. This is the value that is returned,
for example, in each loop of a foreach statement. The yield keyword is also
used with break to signal the end of iteration."
Operation of yield
When combined with the return mechanism allowing
creation, the function returns a value that handles certain information in the
loop, and puts an end to certain conditions before it. This is contrary to the
case of a normal return; that returns a value of the function and finish the
function at that point. But here, the function is to call back in the loop
containing the yield return function that just ended. From here we can imagine
an action that is rather abstract, but can be useful in some cases, to help
keep code concise and tight.
How to use yield return
i.
Do not put "yield" in an unsafe
block.
v. Do not use "yield" of the anonymous method.
Example of using yield return
To use "yield return", you just need to create a method with a return type that is an IEnumerable (arrays and collections in .Net implements IEnumerable interface) with a loop and use "yield return" to return a value to set in the loop body.
For example, a function with two arguments (int start, int number) to generate an even number starting from the starting number.
The following is the code written in the usual way, that returns the result as an array and then use one array to receive the value returned:
We can instead, use a yield return to make the code
simpler, quick operation, reducing operating costs through other
intermediaries, easy error checking code in the case of large volume.
In the second code you can set a breakpoint at line 21
and line 13 and start a debug function continue (F5), you will see that the two
breakpoints will be activated alternately. This demonstrates that the program
can jump back and forth between the two modes without losing their current
state.
Conclusion
One advantage of using "yield" is that you can see right in the first instance that the number of lines of code is reduced.
Moreover, because two working modes rotate, you do not need to create or get a list of the elements to browse. This applies in cases such as searching and browsing a number of elements required that will be reduce the dependency on the location of the element to find.
Comments
Post a Comment