PDA

View Full Version : Delegate



ayub_coder
شنبه 03 مرداد 1388, 20:44 عصر
سلام دوستان
من قبلاً تو سایت سرچ زدم ولی بسیار سنگین توضیح دادن :گیج:
برای یه کاربر تازه وارد مثل من می شه بگین delegate چیه؟
یه توضیح به صورت ساده و قابل فهم. مرسی:خجالت:

Unknownlive
شنبه 03 مرداد 1388, 22:44 عصر
درکت می کنم خودم هم یه روزی بلد نبودم خودم را به زمین و زمان بستم یاد گرفتم و دیدم چه قدر ساده است.
ابتدا برای درک بهتر مفهوم Delegate در زبان انگلیسی به معنای نماینده می باشد شما می توانید یک یا چند توابع تعریف کنید و یکی یا همه توابع را به یک Delegate ارتباط دهید بعد این Delegate را پیاده سازی می کنید و با صدا زدن آن تمامی متد یا توابع اجرا شوند نکته مهم این که نوع خروجی و تعداد پارامتر ها با Delegate باید همخوانی داشته باشد
یک فایل ضمیمه کردم همچنین بحث های دیگری هم است از جمله رویداد ها که بعدا می گم حالا زوده.

hozouri
یک شنبه 04 مرداد 1388, 07:33 صبح
ببینید به طور کل delegate یه امضاء حساب میشه برای تعریف modifier و آرگومان ها

ayub_coder
یک شنبه 04 مرداد 1388, 10:37 صبح
یعنی یه جورایی delegate متدها رو دسته بندی می کنه؟:متفکر:

Unknownlive
یک شنبه 04 مرداد 1388, 11:34 صبح
میشه این طور هم در نظر گرفت در واقع می تونید دسته ای از متد ها را با یک انتساب حروقت خواستید تنها با فراخوانی یک نماینده صدا بزنید برای انتساب بیشتر می تونید از عملگر + و لغو انتساب عملگر - استفاده کنید

ayub_coder
یک شنبه 04 مرداد 1388, 15:59 عصر
میشه این طور هم در نظر گرفت در واقع می تونید دسته ای از متد ها را با یک انتساب حروقت خواستید تنها با فراخوانی یک نماینده صدا بزنید برای انتساب بیشتر می تونید از عملگر + و لغو انتساب عملگر - استفاده کنید


یعنی کاربردش اینه که چند تا متد براش تعریف کنیم و همشونو باهم صدا بزنیم ....
کاره دیگه ای هم میکنه؟:افسرده:

Unknownlive
یک شنبه 04 مرداد 1388, 16:52 عصر
کارهای دیگر هم می کنه البته این کار اصلی اونه اما کارهای نظیر این که یک Event بنویسیم و به آن نسبت بدهیم مثلا یک رویداد مثل Three Click یعنی تا کاربر 3 کلیک کرد این رویداد فراخوانی بشه البته اینجا بیشتر مواقعی کار برد داره که بخواهید Object ها را در زمان اجرا ایجاد کنید

samirdev
دوشنبه 05 مرداد 1388, 00:00 صبح
Delegate in other words is Pointer to Method.

Unknownlive
دوشنبه 05 مرداد 1388, 09:14 صبح
Delegate in other words is Pointer to Method.

شما که می گید در زبان های دریگر یعنی اشاره به یک متد کمی فکر کنید با نماینده یک متد چه فرقی داره این دو معادل هم هستند :متفکر::متعجب::عصبانی++:

ayub_coder
دوشنبه 05 مرداد 1388, 09:28 صبح
میشه یه مثال ساده بزنید تا بهتر متوجه شیم؟ :متفکر:

samirdev
دوشنبه 05 مرداد 1388, 09:30 صبح
با عرض پوزش !
برای درک بهتر گفتم :خجالت:

Unknownlive
دوشنبه 05 مرداد 1388, 11:16 صبح
با عرض پوزش !
برای درک بهتر گفتم
:خجالت::خجالت::خجالت::خجالت:: جالت::خجالت::خجالت::خجالت::خ الت::خجالت::خجالت::خجالت::خج لت::خجالت::خجالت::خجالت::خجا ت::خجالت::لبخندساده::لبخندس ده::لبخندساده::لبخندساده::ل خندساده::لبخندساده::لبخندس ده::لبخندساده::لبخندساده::ل خندساده::لبخندساده:

Royce_Da
دوشنبه 05 مرداد 1388, 15:56 عصر
میشه یه مثال ساده بزنید تا بهتر متوجه شیم؟ :متفکر:


دوست عزیز اگر بخوام به صورت یه مثال ساده واست توضیح بدم میتونم اینو بگم.

فرض کن تو یه برنامه داری که درون اون خودت با کد نویسی 500 تا Button ایجاد میکنی . (button ها رو به صورت ارایه ای ایجاد میکنی) بعد میخای واسه رویداد click اینا رویدادی بنویسی که با کلیک کردن یک کدوم از اینا فقط این رویداد واسه همون Button ی که کلیک کردی اجرا بشه نه واسه ی 499 تای بعدی . در حالت عادی تو باید واسه تک تک اون 500 button رویداد از قبل بنویسی بعد با Eventhandeler اون رویداد ها رو به تک تک button ها بدی که این کار با نظر اشتباه میاد .
روش بهتر اینه که تو با Delegate کار کنی و به طور ساده اون کدها رو یک بار بنویسی و برای تک تک button ها از همون به صورت مجزا (مثلا با ارسال index اون button در ارایه به Deligate) استفاده کنی.

امیدوارم متوجه شده باشی

ayub_coder
دوشنبه 05 مرداد 1388, 18:03 عصر
یکم :متعجب:....
ولی نه زیاد :گریه::گریه::گریه: