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

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




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

نام تاپيک: Delegate ها و Event ها در سی شارپ

  1. #1
    آخر فروم باز hamidreza_buddy's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    شریف
    پست ها
    1,167

    پيش فرض Delegate ها و Event ها در سی شارپ

    در سی شارپ برای برنامه نویسی event driven باید با event ها و delegate ها آشنا بود.
    یک نمونۀ این نوع برنامه نویسی ، سیستم even ها در Windows Form ها است. مثلاً یک دکمه را در نظر بگیرید که روی آن کلیک می شود. اگر قبلاً به Event به نام Click که متعلق به دکمه است ، تابعی انتساب داده باشیم، هر موقع که روی آن کلیک می شود، Event Click اجرا می شود و در نتیجه تابع مورد نظر ما اجرا می شود.
    delegate
    delegate شبیه اشاره گرهای توابع C و C++ هستند. یعنی می توان بوسیلۀ آن به یک تابع اشاره کرد.
    بوسیلۀ delegate ها می توان متدهایی که در زمان اجرا (runtime) به آن ها انتساب داده شده اند را اجرا کرد.
    یعنی برخلاف فراخوانی توابع معمولی که در زمان کامپایل (compile-time) مشخصند، هر تابع دلخواهی را می توان به آن ها انتساب داد و اجرا کرد.

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

    یک delegate ساده
    شکل کلی تعریف یک delegate به صورت زیر است:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مثلاً به تعریف نمونۀ زیر دقت کنید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یک delegate شکل کلی تابعی که قرار است فراخوانی شود را نشان می دهد.
    برای استفاده از delegate سه مرحله وجود دارد:
    1-تعریف
    2-مقداردهی اولیه
    3-اجرا

    به برنامۀ زیر (SimpleDelegate1.cs) دقت کنید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که نتیجۀ اجرای آن به صورت زیر است:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Event ها
    Event های c# به صورت زیر تعریف می شوند.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یعنی توابعی از نوع SimpleDelegate را می توان به این Event انتساب داد.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و برای اجرای آن:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Event های موجود در .NETFramework خصوصیات زیر را دارند:
    * Event Handler های موجود در .NET دو پارامتر می گیرند و void برمی گردانند.
    * پارامتر اول شئ را مشخص می کند که event را اجرا کرده.
    * پارامتر دوم شئ است که از EventArgs مشتق شده است.
    * Event ها باید عضو شئ تامین کندۀ Event باشند. (مثلاً عضو Button)
    *

    ابتدا به یک برنامۀ ساده دقت کنید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که خروجی زیر را می دهد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در این برنامه دو تابع MyFunc1 و MyFunc2 موجودند که آن ها را به SimpleEvent انتساب می دهیم و سپس با اجرای SimpleEvent هر دو با هم اجرا می شوند.

    حال به برنامۀ زیر که کمی پیچیده تر است دقت کنید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خروجی برنامه به صورت زیر خواهد بود:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در فایل process.log نیز محتوای زیر قرار می گیرد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    آموزش فارسی ( Persian )
    برای اطلاعات بیشتر به اینجا مراجعه کنید:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    Last edited by hamidreza_buddy; 26-04-2007 at 16:30.

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


Thread Information

Users Browsing this Thread

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

User Tag List

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

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