جولای
26
2015
26
2015
فراخوانی با ارجاع در سی شارپ
نوشته شده توسط admin
دیدگاه(0)
هنگامی که شما یک تابع را به صورت عادی صدا می زنید، تمامی آرگومان ها به وسیله ی مقدار فرستاده می شوند یا به عبارت دیگر یک کپی از مقدار آن ها به تابع فرستاده می شود و تغییراتی که توسط تابع روی متغیر انجام می شود در متغیر اصلی تاثیر نمی گذارد. این امر در مورد تایپ های پایه ای سیشارپ کاملا واضح است. اما اگر دقت کرده باشید وقتی یک شئ نمونه از یک کلاس را به عنوان آرگومان ارسال کنید، با تغییر اجزای آن شئ در تابع، این تغییرات در شئ اصلی هم قابل دیدن است. سوال اینجاست که اگر کپی فرستاده شده است پس چرا تغییرات باقی مانده است؟
برای جواب این سوال باید به مفاهیم شئ گرایی مراجعه کرد. هنگامی که شما یک نمونه از یک کلاس ایجاد می کنید، ابتدا در حافظه مکانی برای اطلاعات و اجزای شئ در نظر گرفته می شود و سپس آدرس آن محل در یک متغیر که شما با نام شئ به آن دسترسی دارید، ذخیره می شود. پس چیزی که به عنوان مقدار شناخته می شود، آدرس محل اجزای شئ است. حال وقتی یک شئ را به یک تابع ارسال می کنید این آدرس است که کپی می شود و نه محتویات آدرس. اکنون هر تغییری که در تابع روی شیئی که متغیر مربوطه به آن اشاره می کند، رخ دهد، در همان آدرس ثبت می شود و چون این یک آدرس مشترک است، تغییرات از طریق متغیر اصلی هم قابل دیدن است. دقت کنید که اگر مقدار متغیر یا همان آدرس را در تابع تغییر دهید، هیچ تغییری در مقدار متغیر اصلی ایجاد نمی شود.
حال اگر قصد دارید یک ارجاع واقعی انجام دهید، باید از کلمه کلیدی ref قبل از نام آرگومان مورد نظر (هنگام تعریف و فراخوانی تابع) استفاده کنید.
کلمات کلیدی out و ref هر دو برای فراخوانی با ارجاع استفاده می شوند اما دو تفاوت کاربردی در آن ها وجود دارد:
- هنگامی که از ref استفاده می کنید، قبل از فراخوانی، متغیر مربوطه حتما باید مقدار دهی شده باشد اما در مورد out اینطور نیست.
- هنگامی که آرگومان out وجود دارد، قبل از اینکه کار تابع تمام شود، حتما باید به آن متغیر یک مقدار نسبت داده شود در غیر این صورت خطای کامپایل خواهید داشت.
این نکته از آن جهت اهمیت دارد که:
هنگامی که می خواهید از یک تابع چند خروجی با تایپ های مختلف بگیرید از out استفاده کنید. اینکار هم خوانایی را افزایش می دهد و هم از اشتباهات ناخواسته جلوگیری می کند.
بهتر است که:
از این روش تنها موقعی استفاده کنید که مجبورید. گرفتن چندین خروجی از یک تابع می تواند پیچیدگی کد را زیاد و رفع خطای آن را سخت تر کند.
برچسب ها: C#, Call by reference, Hami proje, آموزش, حامی پروژه, دانلود, سی شارپ, سیشارپ, فراخوانی با ارجاع, متغییر
مطالب مرتبط
فرستادن دیدگاه
راهنمای دانلود
تبلیغات
آرشیو موضوعی
- کامپیوتر (142)
- آموزشی (30)
- برنامه نویسی متلب (3)
- برنامه نویسی وب (4)
- برنامه نویسی ویندوز (19)
- #C – سی شارپ (18)
- API – اِِی پی آی (6)
- ++C/C سی/سی پلاس پلاس (1)
- #C – سی شارپ (18)
- پایگاه داده (9)
- تحقیقاتی (26)
- سخت افزار (1)
- شبکه های کامپیوتری (28)
- شبیه سازی (7)
- شیوه ارائه مطالب (6)
- طراحی الگوریتم (1)
- طراحی صفحات وب (3)
- CSS – سی اس اس (3)
- HTML – اچ تی ام ال (3)
- کارآموزی (4)
- کامپایلر (2)
- مهندسی نرم افزار (54)
- UML – یو ام ال (51)
- نمونه سوال (3)
- هوش مصنوعی (1)
بیشترین بازدید
- مدلسازی معنایی داده ها - تعداد بازدید (83,237)
- تجزیه و تحلیل سیستم کتابخانه توسط UML - تعداد بازدید (32,792)
- تجزیه و تحلیل سیستم رزرو و فروش بلیط در آژانس مسافرتی با UML - تعداد بازدید (30,166)
- نمودار ER بانک و روابط بین آنها و نرمال سازی جداول در سطح BCNF - تعداد بازدید (26,961)
- نمودار جریان داده (Data flow Diagram(DFD آژانس تاکسی تلفنی - تعداد بازدید (25,814)
- نمودار ER کتابخانه و روابط بین آنها و نرمال سازی جداول در سطحBCNF - تعداد بازدید (25,668)
- تجزیه و تحلیل فروشگاه با UML در نرم افزار رشنال رُز - تعداد بازدید (24,069)
- تجزیه و تحلیل سیستم فروشگاه آنلاین با UML در نرم افزار رشنال رز(Rational Rose) - تعداد بازدید (23,280)
- Checkout - تعداد بازدید (23,166)
- تجزیه و تحلیل سازمان تامین اجتماعی با UML در نرم افزار رشنال رُز - تعداد بازدید (21,925)
مطالب تصادفی
- انجام پروژه های دروس رشته کامپیوتر
- گزارش کارآموزی در سازمان جهاد کشاورزی – رشته کامپیوتر
- فیبر نوری
- تجزیه و تحلیل انبار با UML در نرم افزار رشنال رُز
- : تحلیل و طراحی شی گرا برای سیستم کنترل بلیط مترو با استفاده از متدولوژی RUP و UML در نرم افزار رشنال رُز
- تجزیه و تحلیل برگزاری مسابقات کشوری کونگ فو با UML
- تغییر رنگ زمینه ی کنترل های فرم با ورود و خروج از آنها در سی شارپ
- تجزیه و تحلیل سیستم رزرو و فروش بلیط در آژانس مسافرتی با UML
- تجزیه و تحلیل سيستم رستوران و فست فود با UMLو طراحی نمودار جریان داده DFD با Power Designer
- تجزیه و تحلیل آموزشگاه رانندگی با UML در نرم افزار رشنال رُز
تازه ترین ها
- تجزیه و تحلیل آموزشگاه موسیقی با استفاده از UML
- تجزیه و تحلیل هتل با UML در نرم افزار رشنال رُز
- تجزیه و تحلیل سیستم عابر بانک با استفاده از UML در نرم افزار رشنال رُز
- تجزیه و تحلیل صرف غذا در رستوران با UML در نرم افزار Rational Rose
- تجریه و تحلیل سیستم امنیتی ورود و خروج یک سازمان با UML در نرم افزار Pacestar UML Diagrammer
- تجزیه و تحلیل انبار کارخانه با UML
- تجزیه و تحلیل تاکسی تلفنی با UML
- تجزیه و تحلیل سیستم رزرو و فروش بلیط در آژانس مسافرتی با UML
- تجزیه و تحلیل شرکت کاریابی با استفاده از UML
- تجزیه و تحلیل سیستم کتابخانه توسط UML
تقویم شمسی
ش | ی | د | س | چ | پ | ج |
---|---|---|---|---|---|---|
« آذر | ||||||
1 | 2 | 3 | 4 | 5 | 6 | |
۷ | ۸ | ۹ | ۱۰ | ۱۱ | ۱۲ | ۱۳ |
۱۴ | ۱۵ | ۱۶ | ۱۷ | ۱۸ | ۱۹ | ۲۰ |
۲۱ | ۲۲ | ۲۳ | ۲۴ | ۲۵ | ۲۶ | ۲۷ |
۲۸ | ۲۹ | ۳۰ |