Skip to main content

Passing Arrays to methods in a better way

අද අපි බලන්න යන්නේ C# වල තියෙන තවත් අපට ගොඩක් ප්‍රයෝජනවත් වෙන දෙයක් ගැන. ගොඩක් වෙලාවට අපි methods ලියද්දි අපිට ඕනේ වෙනවා මේ methods වලට Arrays pass කරන්න. ඒ වගේ වෙලාවට අපි කරන්නේ method එක call කරන තැන Array එකක් හදල ඒකට data දාල method ඒකට pass කරන එක. 

පහල පෙන්නලා තියෙන්නේ එක කරගන්න විදිහ.
int Add(int[] data)
{
   int sum = 0;
   for (int i = 0; i < data.Length; i++)
   {
      sum += data[i];
   }
   return sum;
}
අපි දැන් මේ method එක call කරන්න පුළුවන් මෙන්න මේ විදිහට.

void TestArray()
{
    int[] data = new int[4];
    data[0] = 3;
    data[1] = 5;
    data[2] = 2;
    data[3] = 7;
    int sum = Add(data);
}
පේනවා නෙ අපි array එක හදල ඒකට values දාල එවන විදිහ.මේක ඉතින් එච්චරම ලේසි වැඩක් නෙමෙයි කියල දැන් පැහැදිලි නෙ.

ඒත් මේක කරගන්න මීට වඩා ලේසි ක්‍රමයක් තියෙනවා. ඒ ගැන කතා කරන්න තම අපි මේ ලෑස්ති වෙන්නේ.
මේකට අපට තියෙන ලේසිම විදිහ තමා params keyword එක පාවිච්චි කරන එක. එක කරගන්නේ කොහොමද කියල පහල පෙන්නලා දීල තියෙනවා.
int Add(param int[] data)
{
   int sum = 0;
   for (int i = 0; i < data.Length; i++)
   {
      sum += data[i];
   }
   return sum;
}
දැන් මේ method එක call කරන විදිහ තමා පහල පෙන්නලා තියෙන්නේ.
void test()
{
   int sum1 = Add(1, 3, 5, 2, 7);
}
පේනවානේ, call කරන තැන අපිට array එකක් හදාගන්න ඕනේ වෙන්නේ නෑ. ඒ වගේම තමා අපිට ඕනෙම තරමක් parameters මේ විදියට pass කරන්න පුළුවන්.

හැබැයි මෙතෙන අපි මතක තියාගන්න ඕනේ කරුණු තුනක් තියෙනවා.
  1. මේ Add method ඒකට තවත් integer array එකක් ගන්න overload method එකක් තියෙනවා නම්, අපි මේ ලියපු method එක නෙමෙයි call වෙන්නේ ඒ අපි overload කරලා තියෙන method එක.
  2. param array එකක් අපිට ඕනේ නම් පුළුවන් තවත් parameters එක්ක පාවිච්චි කරන්න, හැබැයි එහෙම පාවිච්චි කරනවා නම් අපේ param array එක තමා parameters list එකේ අන්තිම parameter එක වෙන්න ඕනේ. ඒ කියන්නේ param array එකට පස්සේ තවත් parameters තියෙන්න විදිහක් නෑ.
  3. එක method එකකට parameter එකක් විදිහට තියෙන්න පුළුවන් එක param array එකක් විතරයි.
ඉතින් මතක තියාගන්න අපිට මේක පාවිච්චි කරන්න පුළුවන් ඔය කියන කොන්දේසි වලට එකග වෙනවා නම් විතරයි. නරක නෑ නේද වැඩේ.

Comments

Popular posts from this blog

Adding Unique Constraints with Entity Framework Code First

Entity Framework Code First is a great way to define and maintain your database within your application it self. While it poses a nice set of complementing libraries like Data Annotations and Fluent Configurations which helps you specially in defining phase of your database, it would give you a headache if you try to define a unique constraint on a column. For example in the users table of your application you could probably have an int ID column which would serve as the primary key and you might need to make your Username column a unique one. Since you are using EF Code First you will soon find out there is no direct way to accomplish this requirement. Unfortunately fluent configurations doesn't have syntax like HasUnique(u => u.Username); I asked the same question in stackoverflow , but didn't get a convincing answer. Since there is no direct support from EF for this you could take one of following alternatives to achieve it. Approach 1 :  ...

Using BackgroundWorker in C#

අපි අද කතා කරන්න හදන්නේ තවත් අපිට ගොඩක් ප්‍රයෝජනවත් වෙන C# වල තියෙන feature එකක් ගැන. ඒ තමා මේ BackgroundWorker කියන component එක, මේක පාවිච්චි කරලා අපිට පුළුවන් අපේ programs වලට Threads හදාගන්න. අපි සාමාන්‍යයෙන් Threads පාවිච්චි කරන්නේ මොකක් හරි ගොඩක් වෙලා යන වැඩක් program එකෙන් කරද්දී ඒ වැඩේ program එක පාවිච්චි කරන කෙනාට එහෙම නැත්නම් User ට නොතේරෙන විදියට කරගන්න, උදාහරණයක් විදියට අපි database එකකට connect වෙලා data set එකක් fetch කරනවා කියල හිතන්න මේ වැඩේට ලොකු වෙලාවක් යනවා නම් User හිතෙන්නේ program එක හිර වෙලා කියල. ඉතින් මෙන්න මේ ප්‍රශ්නේ විසඳා ගන්න පුළුවන් අපිට BackgroundWorker එක පාවිච්චි කරලා. ඒ කියන්නේ පොඩි Progress Bar එකක් වගේ දෙයක් පෙන්නලා user ට කියන්න පුළුවන් වැඩේ ඇතුලෙන් කෙරෙනවා කියලා. හරි අපි පටන් ගමු, මුලින්ම කරන්න තියෙන්නේ Visual Studio වලින් Windows Forms Application එකක් හදාගන්න එක. ඊට පස්සේ සාමාන්‍යයෙන් ඔයාලගේ right hand side එකේ Tool Box එක දිහා බැලුවම පෙනෙයි මෙන්න මේ වගේ මෙතන අපිට පේනවා BackgroundWorker කියල tool එකක් තියෙනවා, දැන් මේක drag කරලා drop ක...

Applying Themes for Silverlight 4

ටික දවසකට පස්සේ ලියන්න හොඳ දෙයක් එක්ක වෙලාවක් හම්බ උනා. මේ දවස් වල මම පොඩි අත්හදා බැලීමක් කරනවා Silverlight 4 එක්ක. Visual Studio 2010 තමා පාවිච්චි කරන්නේ. හැබැයි එක හිතපු තරම් ලේසි උනේ නෑ. ඒ නිසා මම හිතුවා ඒ ගැන පොඩ්ඩක් ලියන්න. මුලින්ම කියන්න තියෙන්නේ Silverlight 4 එක්ක වැඩ කරන්න නම් VS 2010 විතරක් තිබුනට මදි, ඒකට ඔයාලට ඕනෙ වෙනවා VS2010 Service Pack 1. ඒක download කරගන්න පුළුවන් මෙන්න මේ ලින්ක් එකෙන්. මෙතන ඇත්තටම තියෙන්නේ ISO image එකක්, ඒක mount කරලා install කළා නම් වැඩේ ගොඩ. ඊට පස්සේ අපි බලමු කොහෙන්ද මේ Themes හොයාගන්න පුළුවන් කියල. ඒකට යන්න මෙන්න මේ ලින්ක් ඒකට, එතන තියෙන " SL4Themes-templates.zip " කියන file එක download කරගන්න. මේ themes Microsoft එකෙන් officially release කරලා තියෙන themes වගයක්. ඇත්තටම මේ download එකේ තියෙන්නේ Project Templates. දැන් කරන්න තියෙන්නේ මේක Unzip කරලා VisualStudio2010 කියන folder එක ඇතුලේ තියෙන JetPack.vsix වගේ file එකක් double click කරන එක. එකෙන් පොඩි Installer එකක් දුවලා install වෙනවා Visual Studion Project Template එකක්. දැන් ක...