PDA

نسخه کامل مشاهده نسخه کامل : دسترسی Delegate به متد خصوصی کلاس دیگر در سی شارپ



Life24
29-03-2018, 11:03
با سلام

دوستان یک سوال:
در این سه کلاس که نوشتم در کلاس Program ما باید تکلیف Event رو روشن کنیم که به کجا Add شود یعنی موقع اجرا بلاخره به کدام متد اشاره کند که یک متد از نوع دسترسی private نوشته شده و بهش اضافه شده.
حال سوال اینجاست . در کلاس Worker در نهایت موقع اجرا متغیر del به متد Worker_WorkPerformed موجود در کلاس دیگر که Program هست و دسترسی private داره اشاره میکنه.
چطور؟ یعنی متغیر و اعضای حصوصی فقط توسط همان اعضا و متغیر های کلاس قابل دسترسی هستند. ایجا چطور از کلاس Worker به متدی از کلاس Program اشاره دارد.
با تشکر


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


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

_H2_
01-04-2018, 10:48
سلام
بله مشکلی ندارد.
شش حوزه دید موجود فقط در حد مرئی/نامرئی عمل میکنند و تفاوت بنیادین ندارند.
خلاصه عرض کنم، حتی بدون این کارها هم میتوان، اعضای private کلاس دیگر را (متغییر،متد،خصیصه و...) دستکاری کرد، مانند زمانیکه یک پوشه در هارد مخفی است ولی با دادن نام اش میتوان واردش شد...

در شرایط عادی این اعضاء (در مثال شما تابع یا متد) دیده نمیشوند ، مخفی هستند.
ولی در هرصورت شما از داخل خود کلاس که دسترسی به این اجزای private دارد، آدرس محل RAM آنها را در آورده اید و به دیگری داده اید...

اگر دقت کرده باشید در برنامه های ویندوزی WinForm و WPF برای رویداد کنترلر ها (TextBox, Button, ...) اغلب از همین متدهای private استفاده میکنیم، این کاری عادی و مرسوم است.
خودتان از داخل کلاس انجام داده اید که کاملا مجاز است.