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 :  

The list of do's and don'ts when preparing your resume

During past couple of years many times I was asked by my colleagues in the HR department "Could you please shortlist these resumes for interviews?" answer was almost always yes. As a result I have gone through a large number of resumes to check whether if these people are suitable for an interview.  While I'm scanning these resumes I found many reasons that I could reject these let alone the technical incompetencies of the candidates. Then suddenly one day I said to myself "why don't you write simple blog post about this?". So here I'm trying to put up a list of reasons that your resume might get rejected and how to minimize it. When you read this you will realize how trivial some mistakes are but they could surely cost your chance of landing your dream job. Typos in the resume Well I hate typos because it shows you how inconsiderate you are, keep in mind your resume is the first contact point with your potential employer so why don't

Building Highly Scalable Web Applications with Windows Azure

Among many other benefits of moving or building your web applications in cloud, for me I think the most important benefit we get is scalability. When it comes to web applications there are two approaches for scalability. Scale out - This means we increase the number of running instances of the application with a load balancer which distributes the requests among those instances Scale up - This means we increase the physical resources on a single application instance, for example we can increase the RAM of the hosted machine In reality preferred way of web application scalability should be to scale out. Because there are obvious hardware limitations in scale up approach. Bearing that in mind if we look at what Windows Azure provides out of the box, for a certain level it supports scale up approach and it has a great amount of support for scale out approach. Scaling your application out Windows Azure supports both automatic and manual scale out of the application.