PDA

View Full Version : سوال: Auto-Implemented Properties in C#



irpersian20
چهارشنبه 26 تیر 1392, 23:08 عصر
سلام

دوستان امکان داره توضیحی بفرمائید؟
من لینک ماکروسافت رو نفهمیدم.
http://msdn.microsoft.com/en-us/library/bb384054.aspx
خوب ما set و get هم نزاریم همین کار برامون انجام میده.جریان ایجاد یک متغیر private چیه؟

tooraj_azizi_1035
پنج شنبه 27 تیر 1392, 11:37 صبح
خوب ما set و get هم نزاریم همین کار برامون انجام میده.جریان ایجاد یک متغیر private چیه؟ منظورتون از همین کار چیه.

اصل قضیه بر میگرده به تفاوت بین Field و Property و اینکه چطور باید بین این دو یکی رو انتخاب کنیم.

اگر شما قراره یک خاصیتی در کلاستون داشته باشید که Client کلاس شما (یعنی کسی که از اون استفاده می کنه) تحت هر شرایطی بتونه مقدار اون خاصیت رو بخونه و بنویسه در اینصورت باید از یک فیلد Public استفاده کنید.
منظور از تحت هر شرایط اینه که بدون محدودیت در رنج مقادیر و در حالت های مختلفی که شیء می تونه به خودش بگیره (با فراخوانی متدها) کاربر بتونه به اون مقدار بده.
مثلاً در مورد فیلد Age شما نمی تونید مقدار منفی بدید به همین دلیل باید از Porperty استفاده کنید تا جلوی مقدار دهی مستقیم رو بگیرید.

علت ایجاد فیلدهای Private اینه که کلاس با این فیلدها کار می کنه نه با Porperty.
Porperty فقط یک واسط هست که خواندن نوشتن رو برای ما انجام می ده اما به شکل کنترل شده. اگه Porperty وجود نداشته باشه شما می تونید وضعیت شیء رو ناخواسته تخریب کنید.
مثلاً مقداری به یکی از فیلدهای یک کلاس بدید و با این کار باعث بشید اون کلاس بیش از حد حافظه مصرف کنه و StackOverflowException تولید کنه در حالی که با خصوصی کردن این فیلد شما مستقیماً نمی تونید مقدار نامناسب به این فیلد بدید و باعث تولید این Exception بشید چون Porperty جلوی مقداردهی نامعتبر رو میگیره.