تبلیغات :
خرید لپ تاپ استوک
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: ارسال آرگومان در delegate

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض ارسال آرگومان در delegate

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    سلام،
    میشه خط بالا رو توضیح بدید؟
    چطور است که delegate ما پارامتری از int میگیره اما الان یک تابع رو هنگام ایجاد شی از اون داریم بهش پاس میدیم.
    آیا پشت پرده کد خاص و اتفاقی میافتد؟

  2. این کاربر از Life24 بخاطر این مطلب مفید تشکر کرده است


  3. #2
    کاربر فعال تالار .Net Msba's Avatar
    تاريخ عضويت
    Dec 2006
    محل سكونت
    ! My Mind
    پست ها
    506

    پيش فرض

    دقت کنید. ببینید که شما با تعریف delegate یک اشاره گر به تابع تعریف می کنید. این اشاره گر به تابع هست نه آرگومان تابع. اشاره گر به تابعی که در این مثال، این تابع یک آرگومان int دارد. یعنی شما به این delegate تابعی را می توانید متصل کنید که یک آرگومان int داشته و خروجی آن نیز int است. پس در موقع اتصال قالب باید رعایت شود و نام تابعی که این قالب را دارد برای فراخوانی کافی است. برای فراخوانی هم طوری از ویکلتان استفاده می کنید که گویی از تابعتان را فراخوانی می کنید.

    موفق باشید.

  4. 2 کاربر از Msba بخاطر این مطلب مفید تشکر کرده اند


  5. #3
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    دقت کنید. ببینید که شما با تعریف delegate یک اشاره گر به تابع تعریف می کنید. این اشاره گر به تابع هست نه آرگومان تابع. اشاره گر به تابعی که در این مثال، این تابع یک آرگومان int دارد. یعنی شما به این delegate تابعی را می توانید متصل کنید که یک آرگومان int داشته و خروجی آن نیز int است. پس در موقع اتصال قالب باید رعایت شود و نام تابعی که این قالب را دارد برای فراخوانی کافی است. برای فراخوانی هم طوری از ویکلتان استفاده می کنید که گویی از تابعتان را فراخوانی می کنید.

    موفق باشید.
    سلام،
    ممنون از پاسخ خوب شما
    اما یک سوال:
    ما از Anonymous method ها نیز میتوانیم استفاده کنیم جای متدهای با نام.
    اما کی؟ همه وقت و موقع میشود از متد بی نام،جای متد بانام استفاده کرد؟ آیا قانون یا استاندارد خاصی دارد؟

  6. این کاربر از Life24 بخاطر این مطلب مفید تشکر کرده است


  7. #4
    کاربر فعال تالار .Net Msba's Avatar
    تاريخ عضويت
    Dec 2006
    محل سكونت
    ! My Mind
    پست ها
    506

    پيش فرض

    استفاده از توابع یعنی پرش به جای خاصی از کد اجرایی که یک جورایی می شه پرش به یک نقطه از حافظه. (برای کسب اطلاعات بیشتر فرمان های Call و JMP را در اسمبلی یا MSIL بررسی کنید)
    حالا این مثال را در نظر بگیرید:
    من به شما می گویم برید خیابان 20 ام. شما می روید به خیابان 20 ام.
    من به شما یک کاغذ می دهم که آدرسی که باید بروید در آن نوشته شده و در نامه نوشته شده خیابان 20 ام.

    خوب اولی فراخوانی تابع می شود و دومی می شود استفاده از وکیل یا همان اصطلاح Anonymous method. در یک توضیح بیشتر در فراخوانی مستقیم روند خاصی نیست فقط بحث پرش و اصول آن است اما در حالت دوم شما می توانید متن نامه را پیوسته تغییر دهید. یعنی پرش به جایی که هر دفعه می تواند تغییر کند. خوب کجا مورد استفاده است؟
    ابتدا اگر قرار است به تابعی که هر دفعه ثابت است پرش کنید نیاز نیست تا از این راه استفاده کنید چرا که بهینه نیست، چرا؟ چون یک مرحله کار بیشتری باید صورت گیرد یعنی درب نامه باز شود و علت دوم نیز استفاده بی مورد از حافظه هست. یعنی شما آدرس یک خیابان را می دانید و آن را هم می نویسید، خوب این نوشتن یعنی همان برگه ی کاغذ یعنی استفاده از چند خانه ی حافظه که این حجم همان
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    می باشد. پس هم خانه اشفال می کنید هم یک مرحله کار بیشتر.(صرفه نظر از بهینه سازی و فراموش کردن آدرس!)
    استفاده از این قالب در جایی مهم است که ندانید قرار است چه تابعی را فراخوانی کنید. در نظر بگیرید که یک ماژول از یک پروژه بزرگ دست شماست و این تیم 50 نفر آدم باشند. خوب کد شما قرار است یک رویداد تولید کند که برنامه نویسان دیگر استفاده کنند. آیا میدانید که قرار است چه تابعی را فراخوانی کنند؟ چه کدی می نویسند؟ خوب اینجا یک وکیل حلال مسئله است. یا یک مثال دیگر، در حال نوشته لایه های مختلف نرم افزار هستید. خوب اگر یک لایه لازم باشد وضعیت خود را گزارش کند( مثلا قطع شدن ارتباط با دستگاه) آیا می توانید تابعی را فراخوانی کنید که در حدود لایه ی شما نیست؟ باز هم استفاده از این قالب مورد نیاز خواهد بود.

    موفق باشید.

  8. 2 کاربر از Msba بخاطر این مطلب مفید تشکر کرده اند


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •