مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

آموزش متد method در سی شارپ - بخش دوم


قسمت چهاردهم

متد (method)

در این مقاله قصد داریم تا از میان اعضای نوع داده کلاس در سی شارپ با ادامه مطلب در رابطه با متد (method) بحث را ادامه بدهیم.

در مقاله قبلی متد (method) را مجموعه ای از دستورات در قالب یک بلاک تعریف کردیم که به منظور انجام عمل خاصی در کنار یکدیگر قرار می گیرند. همچنین اشاره کردیم که در تعریف یک متد (method) سطح دسترسی ، نوع داده برگشتی (return type) و پارامتر ها (parameters) از ملزومات در تعریف یک متد هستند. همچنین با چگونگی تعریف یک متد در نوع داده کلاس در سی شارپ آشنا شدیم و نحو فراخوانی یک متد نیز گفته شد. در این مقاله بحث را در رابطه با متد ادامه خواهیم داد.

تفاوت پارامتر با آرگومان (Parameters vs Arguments)

  • پارامتر در متد: (method parameters)

 در زمان تعریف متد (method) ، نوع و نام پارامتر هاای (parameters) که باید به متد ارسال گردد مشخص می شود. همانطور که در تصویر زیر مشخص شده است در تعریف این متد دو تا پارامتر (parameter) با نام های inputmoney با نوع داده double و inpuraccountNumber  از نوع داده int  وجود دارد.

 

  • ارگومان در متد ( method arguments)

 در زمان فر اخوانی متد ، مقادیر واقعی ای که ، معادل هر پارامتر (parameter) در تعریف متد ، به متد ارسال می شوند آرگومان (argument) نامیده می شوند. بدیهی است که نوع داده ارگومان (argument) با پارامتر (parameter) متناظر ان باید سازگار باشد. همانطور که در تصویر زیر مشخص شده است دو تا مقدار 0 و 123345 ارگومان ها ای  (arguments) هستند که مقادیر پارامتر های (parameters) متد تعریف شده در تصویر بالا را  فراهم می کنند.

 ارسال نوع داده با مقدار در متد

  • ارسال نوع داده با مقدار ،  با مقدار (passing value type by value)

زمانی که یک متغیر از نوع داده مقدار (value type) به یک متود ارسال می شود ، از آنجا که در متغیرهای از نوع داده مقدار (value type) خود مقدار در متغیر ذخیره شده است و نه آدرس مقدار داده ، داده در پارامتر کپی می شود و در نهایت یک کپی از مقدار آرگومان (argument) به متد ارسال می شود. در نتیجه هر تغییری در مقدار پارامتر (parameter) در بدنه متد ، باعث ایجاد تغییر در مقدار آرگومان (argument) نخواهد شد .

مثال : ارسال نوع داده با مقدار ، با مقدار

 

public  class parameters

    {

        public void  passByvalue( int n)

        {
            n += 3;
            Console.WriteLine(" the value of parametr inside the method=" + n);
        }

    }

    class Program

    {

        static void Main(string[] args)

        {
            int x = 10;

            Console.WriteLine(" the value of argumentes before passing to the method=" + x);

            parameters oparameters = new parameters();

            oparameters.passByvalue(x);

            Console.WriteLine(" the value of argumentes after passing to the method=" + x);



        }      

    }

 

در مثال بالا از انجا که متغیر x با نوع داده int از نوع داده با مقدار (value type) است و  مقدار آن برابر با 10 است ، با فراخوانی متد passByvalue متغیر x به عنوان آرگومان (argument) به متد ارسال شده و مقدار آن در پارامتری (parameter) با نام n کپی می شود. همانطور که در مقدار خروجی مشخص است تغییر در مقدار پارامتر (parameter) در درون بدنه متد با اضافه کردن سه واحد به مقدار ان ، تغییری در مقدار آرگومان (argument) پس از فراخوانی متد ایجاد نمی کند و مقدار آن همچنان 10 باقی می ماند. خروجی قطعه کد بالا به صورت زیر است :

the value of argumentes before passing to the method= 10

the value of parametr inside the method=13

the value of argumentes after passing to the method= 10

  • ارسال نوع داده با مقدار ، با مرجع (passing value type by reference)

اگر بخواهیم در زمان فراخوانی متد مقدار آرگومان (argument) از نوع داده مقدار (value type) تغییر کند باید در زمان ارسال آن به متد ، از کلمه کلیدی ref یا کلمه کلیدی out استفاده کنیم و به این ترتیب ، آرگومان از نوع داده مقدار (value type) را به صورت ارسال با مرجع (pass by reference)  ارسال کنیم.

مثال : ارسال نوع داده با مقدار ، با مرجع

public  class parameters

    {

        public void  passByvalue(ref int n)

        {
            n += 3;

            Console.WriteLine(" the value of parametr inside the method=" + n);
        }

    }

    class Program

    {

        static void Main(string[] args)

        {
            int x = 10;

            Console.WriteLine(" the value of argumentes before passing to the method=" + x);

            parameters oparameters = new parameters();

            oparameters.passByvalue(ref x);

            Console.WriteLine(" the value of argumentes after passing to the method=" + x);

        }      

    }

 قطعه کد بالا مثل قطعه کد در مثال قبل است با این تفاوت که این بار کلمه کلیدی ref در زمان تعریف پارامتر ها (parameters) و ارسال ارگومان (arguments) اضافه شده است. حالا پارامتر n در متد passByvalue از نوع int نیست بلکه ان حاوی آدرس داده ای از نوع int می تواند باشد و همین طور در زمان فراخوانی متد passByvalue ، مقدار متغیر x به عنوان ارگومان (argument) ارسال نمی گردد بلکه آدرس مقدار آن ارسال می گردد. واضح است که با ارسال و دریافت آدرس داده هر تغییری که در درون متد روی پارامتر (parameter) انجام شود باعث تغییر در مقدار آرگومان (argument) خواهد شد در نتیجه با اضافه شدن 3 واحد به مقدار پارامتر در درون بدنه متد ، مقدار آرگومان نیز 3 واحد اضافه می شود چون هر دو حاوی آدرس به یک مقدار هستند.

خروجی قطعه کد بالا به صورت زیر خواهد بود :

the value of argumentes before passing to the method= 10

the value of parametr inside the method=13

the value of argumentes after passing to the method= 10

 

گرد اوری :سمانه وزیریان

فصلِ: 1 , تعداد قسمت ها: 9 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

آموزش ارسال پیامک، آموزش ارسال پیامک تکی و گروهی ، ارسال پیامک به صورت اختصاصی برای هر مشترک، دریافت پیامک، مشاهده وضعیت…

توضیحات کلی مجموعه:   آیا می دونید قیمت نرم افزارهای مدیریت پیامک در حدود 150 هزار تومان است؟ اما توسط این دوره شما میتونید با مبلغ بسیار کمتر یک نرم افزار مدیریت پیامک رو به صورت کاملا حر…
فصلِ: 9 , تعداد قسمت ها: 59 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

در این فصل که فصل پایانی این دوره می باشد در مورد نحوه ساختن فایل نصبی سریع یا همان quick installer که روش پیشنهاد شده م…

توضیحات کلی مجموعه: پس از بازخوردهای بسیار خوبی که از دوره های آموزش برنامه نویسی سیستم اتوماسیون اداری و آموزش برنامه نویسی سیستم فروش و انبارداری مشاهده کردیم، تصمیم گرفتیم با توجه به درخ…
فصلِ: 13 , تعداد قسمت ها: 120 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

در این فصل که فصل آخر از مجموعه بزرگ آموزش سیستم اتوماسیون اداری می باشد در ابتدا در مورد اسناد و نامه های خارج از سازما…

دوره صفر تا صد  آموزش برنامه نویسی و پیاده سازی سیستم اتوماسیون اداری تحت شبکه. (توصیه می شود دومی مجموعه را حتما ببینید) امروزه اطلاعات یکی از مهمترین و با ارزشترین منابع هر اداره و یا ساز…
فصلِ: 4 , تعداد قسمت ها: 14 , سطح: مقدماتی

این فصل در یک نگاه:

توضیح تنظیمات گرافیک و صدا در یونیتی پیاده سازی منو ها …

به نام خدا   بازی‌سازی یک حرفه بسیار جذاب است و تبدیل شدن به یک بازی‌ساز حرفه‌ای آرزوی همه ماست. اینکه بتوانیم دنیای خاصی خلق کنیم و در این دنیا قوانین خود را پیاده کنیم، همیشه ما را به وج…
فصلِ: 11 , تعداد قسمت ها: 92 , سطح: صفر تا صد

این فصل در یک نگاه:

اجرای سیستم روی سیستم، قرار دادن سیستم روی سرور، تعریف Connetion String، آشنایی با فایل App.config، ساخت رشته اتصال به ص…

مهمترین تکنولوژیهای استفاده شده در این دوره پروژه محور (سیستم فروش کالا و انبارداری) طراحی گرافیکی به روش WPF (Windows Presentaion Foundation) آموزش کامل برنامه نویسی xaml (برای طراحی های …
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید