در این مطلب قصد داریم بدانیم delegate چیست؟ چه کاربردی دارد؟ چگونه و در چه موقعیتهایی باید از آنها استفاده کرد؟
اگر دوست دارید جواب این سوال ها را بدانید با ما همراه باشید.
Delegate، یکی از زیرساختیترین مفاهیم است؛ زیرا با یادگیری این مفهموم میتوان مفاهیمی از جمله Func ،Event ،Predicate (فانکشن) و اکشن در سی شارپ را به راحتی فراگرفت.
قبل از اینکه وارد بحث بشیم ابتدا، بحث واژهشناسی Delegate را بررسی میکنیم.
delegate چیست؟
Delegate به معنای نماینده است؛ فرضا ما در دنیای واقعی فردی را نماینده میکنیم که به جای ما یک یا چند کار را انجام دهد و در نهایت نتیجهی کارها را به ما گزارش دهد.
در دنیای برنامهنویسی زبان سی شارپ نیز دقیقا به همین معنا میتوان از آن استفاده کرد، یعنی اینکه ما یک نماینده میسازیم که یک یا چند کار را انجام دهد.
حتما الان که پاراگراف بالا را مطالعه کردید سوالی در ذهنتان با این مضمون بازی میکند، که به راستی یک Delegate چه وظایفی را میتواند انجام دهد؟
در پاسخ به این سوال اینطور بیان میکنیم که Delegateها در واقع اشارهگری به متد/متدهایی میتواند باشد که شرایط لازم را دارا هستند. (به زبان سادهتر میتوان Delegate را خشابی از متدها فرض نمود.) پس یک Delegate زمانی که شرایط لازم را داراست، میتواند نماینده متد یا متدهایی باشد.
منظور از"شرایط لازم" چیست؟
فرض کنید چند متد(رفتار) تعریف کردید: به عنوان مثال:
-
"حرکت کردن"
-
"خوابیدن"
-
"غذا خوردن"
شرایط:
-
با این فرض که این سه متد یک آرگومان ورودی دارند و نوع خروجی هر سه void میباشد.
-
دوم اینکه فرض میگیریم جنس آرگومان ورودی هر سه نوع، آرایهای از مدل Animals است.
پس یاد گرفتیم در زبان سی شارپ قابلیتی وجود دارد که میتوان اشارهگری ساخت که نماینده یک یا چند متد باشد که هر کدام از آن متدها کارهای متفاوتی را انجام میدهند. فقط نکتهی مهم این است که خروجی متد باید با خروجی Delegate و آرگومان یا آرگومانهای ورودی متدها نیز برابر با آرگومان Delegate باشد. مصداق از برابر بودن، از لحاظ نوع دادهای است.
مهمترین و بهترین استفادهها از Delegate:
-
استفاده به عنوان اجراکننده هر متد که امضای آن برابر با خود Delegate باشد.
-
استفاده به عنوان یک رویداد در برنامه نویسی (Event CallBack)
دو مفهوم در دلیگیتها وجود دارد که دانستن آنها لازم است. مفهموم single cast delegate به این اشاره میکند که هر Delegate میتواند فقط به یک متد اشاره کند اما مفهموم multicast delegate دقیقا با این مفهموم در تضاد است و بیانگر این است که هر delegate میتواند به بیش از یک متد اشاره کند.
خب دوستان درباره delegate چیست صحبت کردیم و فهیدیم که مهمترین و بهترین استفاده از آنها چیست. به همین خاطر آکادمی آنلاین درسمن برای یادگیری هرچه بهتر شما عزیزان دوره آموزش سی شارپ پیشرفته را تهیه کرده است که در این دوره هر آنچه که برای یادگیری دلیگیت ها نیاز دارید، با تدریسی ساده و قابل فهم آورده شده است که میتوانید از آن استفاده کنید.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.