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

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


قسمت شانزدهم از مقالات آموزشی

متد (method)

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

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

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

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

 در ارسال نوع داده با مرجع در متد، با مرجع ، در هنگام تعریف پارامتر و ارسال ارگومان از کلمه کلیدی ref استفاده می شود. با این کار هر گونه تغییری که درون بدنه متد روی پارامتر  (parameter) اتفاق بیافتد روی متغیر آرگومان (argument) نیز اعمال می شود. حتی اگر این تغییر قرار گیری آدرس شی جدید در متغیر پارامتر باشد. همچنان که از مقاله قبلی به خاطر دارید ، زمانیکه یک متغیر از نوع داده مرجع (reference type) را به صورت مقدار (passing bay value) به متد ارسال می کردیم (بدون استفاده از کلمه کلیدی ref ) تنها تغییر ، در مقدار داده ای که متغیر پارامتر به آن اشاره می کرد باعث تغییر در داده ای می شد که متغیر آرگومان به آن اشاره می کرد. اما زمانیکه با استفاده از کلمه new  آدرس جدیدی در متغیر پارامتر (parameter) قرار می گرفت ، این آدرس جدید تاثیری در متغیر آرگومان (argument) نداشت و باعث تغییر آدرس در متغییر آرگومان نمی شد ودر نتیجه  بعد از این انتساب ، پارامتر و آرگومان ، تبدیل به دو تا متغیر مستقل می شدند. مثال زیر این مساله را روشن تر خواهد کرد.

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

 

  public  class parameters
    {

        public void  passparameters( ref int[] n , int[] m)

        { 
            n = new int[] { 10, 20, 30, 40, 50, 60 };

            Console.WriteLine(" n[] : inside the body of  methode ,the value of third elemnt is =" + n[2]);

            m = new int[] { 1000, 2000, 3000, 4000, 5000, 6000 };

            Console.WriteLine(" m[] : inside the body of  methode ,the value of third elemnt  is =" +m[2]);

        }
    }

    class Program

    {

        static void Main(string[] args)

        {
            int[] x = { 1, 2, 3, 4, 5 };

            int[] y = { 100, 200, 300, 400, 500 };

            Console.WriteLine("x[]: the value of third elemnt before passing  the array to the method=" + x[2]);

            Console.WriteLine("y[]: the value of third elemnt before passing  the array to the method=" + y[2]);

            parameters oparameters = new parameters();

            oparameters.passparameters( ref x, y);

            Console.WriteLine("x[]:  the value of third elemnt after passing  the array to the method=" + x[2]);

            Console.WriteLine("y[]: the value of third elemnt after passing  the array to the method=" + y[2]);

        }      

    }

 

 در این مثال در متد passparameters دو تا پارامتر (parameter) از نوع آرایه ( که زیر مجموعه نوع داده با مرجع است) تعریف شده است. پارمتر اول با نام n باید به صورت مرجع به متد ارسال شود (passing by reference)  (به خاطر کلمه کلیدی ref ) و پارامتر دوم با نام m به صورت مقدار باید به متد ارسال شود (passing by value). در متد main دو تا آرایه به نام های x و y به عنوان آرگومان در زمان فراخوانی متد passparameters استفاده شده اند. در درون متد passparameters  به هر دو متغیر پارامتر (parametrer) یک آرایه جدید با استفاده از کلمه new  انتساب داده شده است. این تغییر ، در پارامتر n که از نوع ارسال با مرجع بوده است باعث تغییر مقدار آدرس در آرگومان x شده و بعد از این انتساب ، آرگومان x نیز به آرایه جدید اشاره خواهد کرد. اما مساله برای پارامتر  m که از نوع ارسال با مقدار است متفاوت است. و انتساب یک آرایه جدید با استفاده از کلمه new به پارامتر m و در نتیجه تغییر آدرس در آن ، باعث تغییر در آرگومان y نخواهد شد و آرگومان y همچنان به آرایه قبلی اشاره خواهد کرد. مقادیر خروجی گویای این مطلب خواهد بود :

مقدار المان سوم در آرگومان های x و y قبل از فراخوانی متد:

x[]: the value of third elemnt before passing  the array to the method=3

y[]: the value of third elemnt before passing  the array to the method=300

 

مقدار المان سوم در پارامترهای m  و n درون متد:

n[] : inside the body of  methode ,the value of third elemnt is =30

m[] : inside the body of  methode ,the value of third elemnt  is =3000

 

مقدار المان سوم در آرگومانهای x  و  y بعد از فراخوانی متد:

x[]:  the value of third elemnt after passing  the array to the method=30

y[]: the value of third elemnt after passing  the array to the method=300

 

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

فصلِ: 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 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید