انواع ارسال Argument در سی شارپ

انواع ارسال Argument در سی شارپ

انواع فراخوانی :

Call by reference

در این حالت هم جلو پارامتر و هم جلوی آرگومان کلمه Ref می نویسیم.
اگر متغیر اصلی مقداردهی نشده باشد نمی توان از Call by reference استفاده کند

F1(ref f)

Call by value

در ساخت نرم افزار ممکن است بخواهیم مقدار متغیر هایی را به یک تابع فقط به صورت read-only پاس دهیم به نحوی که درون تابع در صورت تغییر مقدار در صورت تغییر مقدار پاس داده شده (پارامتر) متغیر اصلی یا متغیر آرگومان تغییر نکند از تکنیک Call by value استفاده می کند.

Call by Reference

اگر بخواهیم در صورت تغییر پارامتر درون تابع مقدار متغیر اصلی یعنی متغیر آرگومان تغییر نماید جلوی آرگومان و جلوی پارامتر کلمه ref را می نویسیم. در تکنیک Call by valueمتغیری که به عنوان آرگومان به تابع پاس داده می شود بایستی initioalize یا assignment شده باشد.

Call by out

جهت رفع مشکل Call by referenceمی توان از تکنیک Call by out استفاده نمود در این حالت می توانیم به جای کلمه ref از کلمه out استفاده نمود و متغیری که مقدار دهی نشده به صورت Call by Referenceپاس داده در این تابع بایستی متغیر Call by out مقدار دهی اولیه شود.

Call by params

اگر بخواهیم تابعی طراحی کنیم که بتواند بی نهایت پارامتر ورودی داشته باشد از Call by params استفاده می شود.

نکته

همیشه params باید آخرین آرگومان باشد.

Search(“2012” ,4,12)
params
Static int search (string word , params int[] a)
{
Foreach(int item in A)
If(word.contains(item.tostring())==true) return item;
Return -1;
}

برنامه فوق از نظر مهندسی نرم افزار اشتباه می باشد زیرا در تابع search باند یا محدوده خروجی اعداد صحیح می باشند مثبت ، صفر و منفی فرض نمایید بخواهید تابع Search را در تابع روبرو فراخوانی نمایید int n =search("2012 , 13 ,-1 , 78) در اینجا 1- جزء پارامتر ورودی است و شاید -1 اولین عدد نتیجه جستجو باشد از طرفی در صورت پیدا نشدن اعداد ورودی نتیجه اشتباه را توسط 1- اعلام می کند.



نظرات کاربران



عبارت امنیتی : حاصل 6 × 5 می شود :
متن پیام :