C# Yield for Readability and Performance

This item was filled under [ .NET, Microsoft, Programming, Sinhala, Uncategorized, Visual Studio ]
yield  කියන keyword එක C#  වල තියෙන භාවිතයට පහසු keyword එකක්. ලේසියෙන්ම මේ keyword එක තේරුම් ගන්න අපි පහත උදාහරණය බලමු.
public static IList<int> GetEven(IEnumerable<int> ints)
{
    var evenNos = new List<int>();
    foreach (int i in ints)
        if (i % 2 == 0)
            evenNos.Add(i);
    return evenNos;
}

මේ උදාහරණයේදි අළුත් List Object එකක් සාදාගෙන එයට අදාල ඔත්තේ සංඛයා ටික දාගෙන රිටන් කිරීම කරනු ලබනව. ඒ වගේම මේ මෙතඩ් එක පහසුවෙන් පහත තියෙන විදිහට ලියන්න පුළුවන්.

public static IEnumerable<int> GetEven(IEnumerable<int> ints)
{
    // Use yield to return the even numbers in the list.
    foreach (int i in ints)
        if (i % 2 == 0)
            yield return i;
}

මෙහිදී yield කියන keyword එක භාවිතා කරල ලියල තියෙනව. නමුත් return type එක IEnumerable. මේ දෙක වැඩ කරන්නෙ කොහොමද කියල බලමු.

 
සාමාන්‍ය ක්‍රමයට

int[] ints = { 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377 };
var EvenNumbers = NumberList. GetEven(ints.ToList<int>());
foreach (int i in EvenNumbers)
    Console.WriteLine(i);
  1. GetEven() යන method එක call කිරීම.
  2. GetEven() method එකෙන් List object එකක් return කිරීම.
  3. අවෂයතාවය සඳහා නැවත Loop එකක් භාවිතා කර List object එක භාවිතා කිරීම.

 

Yield භාවිතා කිරීමෙන්.
int[] ints = { 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377 };
foreach (int i in NumberList.GetEven())
	Console.WriteLine(i);
  1. GetEven() යන method එක call කිරීම.
  2. GetEven() method එකෙන් එක අයිතමයක් ඉල්ලා ගැනීම.
  3. GetEven() method එකෙන් ඊලග අයිතමය ලබාදීම සහ අවෂය වැඩකටයුතු කිරීම.
  4. නැවත 2වෙනි පියවරට යාම.

 

ඒ වගේම මෙය භාවිතා කිරීමේ සීමා කිරීම් කිහිපයක් තියෙනව.
  • Unsafe code blocks තුල භාවිතා කල නොහැකි වීම.
  • finally නැති try-catch block එකක් තුල භාවිතා කල නොහැකි වීම.
  • parameeters ref හෝ out ලෙස භාවිතා කර ඇති විටෙක.
  • anonymous method (http://msdn.microsoft.com/en-us/library/0yw3tz5k.aspx) තුල භාවිතා කල නොහැක.

 

මෙමගින් ඇති වාසි අවාසි සිතීම භාවිතා කිරීම ඔබ සතුයි. Yield මගින් ඔබගේ කේතය කාර්‍යක්ෂමව මෙන්ම කියවීමට ප හසු කරයි. මෙම පහසුකම .NET 2.0 සිට ඇති පහසුකමක් වන අතර වැඩි විස්තර http://msdn.microsoft.com/en-us/library/9k7k7cf0(v=vs.100).aspx මගින් බලාගත හැක.


Popularity: 276 views
Tagged with: [ , , , , ]
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

One Comment on “C# Yield for Readability and Performance”

  • 21 January, 2012, 0:05

    බොහොම වැදගත් ලිපියක්.. තව මේ වගේ ඒව ලියන්න

Page optimized by WP Minify WordPress Plugin