PDA

نسخه کامل مشاهده نسخه کامل : سوال راجع به اشاره گر this



Tom Clancy's
04-01-2013, 22:14
سلام دوستان
من راجع به این اشاره گر که مربوط به کلاسها هم هست مطلب زیاد خوندم اما هنوز درک کاملا درستی ندارم ازش!!
ممکنه که به صورت واضح توضیح بدین که دقیقا چی هست و چه کاربردی داره؟!

p d
04-01-2013, 22:48
1سمپل ساده :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

تویه کد 2 تا ایکس هست. اونی که اشاره گر this پشتش هست، میشه اون ایکسی که برا کلاس هست.

god of war 2
04-01-2013, 22:58
ویرایش: جناب pd در حین نوشتن این پست جواب داده اند و بنده پس از ارسال این پست جواب ایشونو دیدم.

سلام دوستان
من راجع به این اشاره گر که مربوط به کلاسها هم هست مطلب زیاد خوندم اما هنوز درک کاملا درستی ندارم ازش!!
ممکنه که به صورت واضح توضیح بدین که دقیقا چی هست و چه کاربردی داره؟!
سلام.
بطور واضح و مختصر واژه this یک اشارگر به شی جاری میباشد.
فرض کنید شما کلاس هایی به شکل زیر دارید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

تابع :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وظیفه دارد تا شی جاری از کلاس رو در continer ذخیره کند. دقیقا در چنین نقطه ایی اشارگر this به کار میاید!
تابع AddToContiner توسط اشارگر this میفهمد که دقیقا از کدام شی MyClass فراخانی شده است. در حقیقت اشارگر this در تابع AddToContiner برابر است با شی MyClass ـی که از آن فراخانی شده.
تغریف تابع AddToContiner به شکل زیر میباشد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

----------------
به این مثال توجه کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

دقیقا زمانی که اجرا به تابع AddToContiner میرسد مقدار ها به شکل زیر میباشند:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

------
نکته دیگری که وجود دارد این است که اشارگر this در توابع static کاربرد ندارند. یعنی توابع static در اصل مستقل از شی فراخانی میشوند و فقط یک نمونه از توابع static بین تمام اشیاء یک کلاس به اشتراک گذاشته میشود. پس بنابر این استفاده از this در توابع static کاربرد ندارد و احتمالان با خطا مواجه میشود.