اخبار، مطالب و رویدادهای مرتبط با توسعه نرم افزار رادکام

برنامه نویسی پیشرفته سی شارپ برای پروژه های سی شارپ دات نت - فصل اول: Delegate ها و Event ها - بخش سوم: ایجاد نمونه ای از یک Delegate و فراخوانی آن

به سراغ Delegate ی با نام OperationDelegate می رویم.

delegate int OperationDelegate(int x, int y);

این Deleate همانطور که مشاهده می کنید دو پارامتر از نوع integer دارد و نوع مقدار بازگشتی آن نیز integer است. بنابراین می تواند به متدی اشاره کند که آن هم دو پارامتر ورودی از نوع integer دارد و نوع پارامتر بازگشتی آن نیز از نوع integer است. حال خواهیم دید که چگونه یک نمونه از delegate را می توانیم ایجاد کرده و فراخوانی کنیم.

OperationDelegate oprVar = new OperationDeletage(Add);

در سطر فوق ما یک نمونه از delegate به نام oprVar ایجاد کرده و متد Add را به عنوان ورودی آن قرار داده ایم.
بنابراین متد Add باید همان اسلوب و تعریف OperationDelegate را داشته باشد. بنابراین متد Add نیز باید دو ورودی از نوع integer گرفته و یک پارامتر از نوع integer برگرداند. بنابراین ما اینجا یک آبجکت از نوع OperationDelegate به نام oprVar ایجاد کردیم که متد Add را کپسوله کرده است.

حال خواهیم دید که چگونه باید آن را فراخوانی کنیم.

int tempVal = oprVal(20,10);

در سطر فوق ما از نمونه ایجاد شده از OperationDelegate که oprVar نامگذاری کرده بودیم استفاده کردیم تا متد Add را فراخوانی کنیم و دو پارامتر از نوع integer با مقادیر 10 و 20 را هم به عنوان ورودی های پارامتر به آن داده ایم. بنابراین این delegate متد Add را کپسوله کرده و مقدار بازگشتی این متد درون متغیر tempVal قرار می گیرد.
فرض کنید این delegate مقدار بازگشتی آن void باشد، و باید به یک متد با ساختار و تعریف مشابه اشاره کند. و متدی که به آن اشاره می کند باید مقدار بازگشتی void داشته باشد. بنابراین فراخوانی آن به شکل زیر خواهد بود.

oprVal(20,10);

بنابراین ما کافی است از نام oprVar که از روی نمونه delegate تعریف شده استفاده کرده و مقدار های مورد نظر خود را به عنوان ورودی به آن پاس کنیم. بنابراین این نیز، متدی که در شی مربوط به delegate کپسوله شده است را فراخوانی می کند.

نام را وارد کنید
تعداد کاراکتر باقیمانده: 1000
نظر خود را وارد کنید