our notes for our youngers

August 3, 2009

basic of C# (part 11)

Filed under: Basic of C# — Tags: , , , , — sevenlamp @ 5:35 PM

Parameter passing in C#
Parameter passing ဆိုတာဘာလဲ အရင္ေျပာျပမယ္ေနာ္၊ ကြၽန္ေတာ္တို႔ေရးထားတဲ႔ function ေတြကိုျဖစ္ေစ၊ library ထဲမွာ ရွိျပီးသား predefined function ေတြကိုျဖစ္ေစ ေခၚသံုးေတာ့မယ္ဆိုရင္ အဲ့ဒီ function definition မွာ ေၾကျငာထားတဲ႔ argument(parameger) ေတြကို ထည့္ေပးဖို႔လိုအပ္ပါတယ္။ အဲ့လို function call မွာ parameter ေတြထည့္ေပးတာကို parameter passing လို႔ ေခၚတာပါ။ C# မွာ parameter passing ၄ မ်ိဳးရွိပါတယ္။

1. Value Parameter
2. Reference Parameter
3. Output Parameter နဲ႔
4. Params Array တို႔ ျဖစ္ပါတယ္။

1) Value Passing
C# မွာ default parameter passing က value pass ပါ။ ဆိုလိုတာကေတာ့ ကြၽန္ေတာ္တို႔ function ထဲကို parameter ေပးလိုက္တာက actual value ကို copy တစ္ခုအေနနဲ႔ ထည့္ေပးလိုက္တာပါ။ ဒါေၾကာင့္ function အတြင္းမွာ အဲ့ဒီ value ကို ဘယ္လိုပဲ ေျပာင္းသည္ျဖစ္ေစ၊ နဂို value ေတာ့ ေျပာင္းသြားမွာ မဟုတ္ပါဘူး။ ဥပမာ..

   using System;
   class valuePassTest
   {
        static void Main()
        {
            int num = 10;
            Console.WriteLine("before : " + num);
            Inc(num);
            Console.WriteLine("after : " + num);
            Console.Read();
        }
        static void Inc(int num)
        {
            num = num + 1;
        }
   }

output

before : 10
after : 10

2) Reference Passing
ကြၽန္ေတာ္က Inc function ထဲမွာ ေျပာင္းလိုက္တဲ႔ တန္ဖိုးကို main function ထဲမွာပါ လိုက္ျပီး ေျပာင္းခ်င္တယ္ဆိုရင္ေတာ့ reference pass လုပ္ေပးရပါမယ္။ reference pass လုပ္ဖို႔အတြက္ဆိုရင္ ref keyword ေလးကို parameter ရဲ႕ေရွ႕မွာ ထည့္ျပီး ေရးေပးရမွာပါ။ တခ်ိဳ႕ reference data type(class, array) ေတြကို parameter ပို႔ရင္ေတာ့ ref keyword မထည့္ေပးလည္း ရပါတယ္။

   using System;
   class valuePassTest
   {
        static void Main()
        {
            int num = 10;
            Console.WriteLine("before : " + num);
            Inc(ref num);
            Console.WriteLine("after : " + num);
            Console.Read();
        }
        static void Inc(ref int num)
        {
            num = num + 1;
        }
   }

output

before : 10
after : 11

3) output parameter
Output parameter က reference parameter နဲ႔ ဆင္တူပါတယ္။ ဒါေပမယ့္ output parameter ဆိုတဲ႔ အတိုင္း သူ႔ကို output return ျပန္ခ်င္တဲ႔ variable ေတြအတြက္ သံုးေလ႔ရွိပါတယ္။ function အတြင္းမွာ out variable ထဲကတန္ဖိုးကို assign မလုပ္ေသးခင္ ယူတြက္လို႔မရပါဘူး။

using System;
class outputPassTest
{
   static void Main()
   {
     int num = 10; int result;
     Square(out result, num);
     Console.WriteLine("result : " + result);
     Console.Read();
   }
   static void Square(out int result, int num)
   {
     result = num * num;
   }
}

output

result : 100

4) Params Array
Function call မွာ ထည့္ေပးလိုက္တဲ႔ value ေတြကို array တစ္ခုအေနနဲ႔ လက္ခံခ်င္တယ္ဆိုရင္ params keyword ကိုသံုးရပါတယ္။ example ေလးပဲ ၾကည့္လိုက္ေတာ့ေနာ္။

 using System;
 class paramsTest
 {
    static void Main()
    {
       Show(1, 3, 5, 7, 9);
       Console.Read();
    }
    static void Show(params int[] arr)
    {
       foreach (int x in arr)
       {
          Console.Write(x + " ");
       }
    }
 }

output

1 3 5 7 9

ဒီ example ေလးမွာ ကြၽန္ေတာ္ေပးလိုက္တဲ႔ parameter 5 လံုးကို array အေနနဲ႔ လက္ခံသြားတာကို ေတြ႔ရမွာပါ။

2 Comments »

  1. Please check again the two examples.I assume that examples are not concide with according lecture.
    One is for output Parameter and the other is for Params Array.

    Comment by swelin — September 23, 2009 @ 12:05 AM

    • hello ma swelin,

      really thanks to your comment. now, i changed with the right examples.
      please let me know, if something wrong in my other post. really really thanks to you.

      regards,
      sevenlamp

      Comment by sevenlamp — September 23, 2009 @ 9:54 AM


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: