PDA

View Full Version : نحوه تعریف پروپرتی



sasan_22
جمعه 11 اسفند 1391, 18:10 عصر
سلام
یه سوال خیلی ساده دارم و اونم اینه که چ فرقی بین این وتا کد هست

private int myVar;
public int MyVar
{
get { return myVar; }
set { myVar = value; }
}



public int MyVar { get; set; }


ممنون

sasan_22
جمعه 11 اسفند 1391, 18:12 عصر
در ضمن تا یادم نرفته اگه بخوام متغییرم استاتیک باشه باید چیکار کنم ؟؟

danialafshari
جمعه 11 اسفند 1391, 19:09 عصر
در ضمن تا یادم نرفته اگه بخوام متغییرم استاتیک باشه باید چیکار کنم ؟؟

private static int myVar;

esafb52
جمعه 11 اسفند 1391, 21:04 عصر
دوست عزیز فرقش اینه که با توجه به قانون اول شی گرایی (کپسوله سازی) فیلد ها نباید در خارج از کلاس قابل دسترس باشند به چند دلیل مثلا طرف میتونه هر مقداری رو داخلش قرار بده درصورتیکه اگه با پراپرتی کار کنیم میتونیم براش محدودیت ایجاد کنیم ضمنا کابرد های دیگه ای هم هست که .........

sasan_22
جمعه 11 اسفند 1391, 23:29 عصر
در رابطه با متغییر استاتیک :
فقط متغغیر استاتیک میشه دیگه با پروپرتی کاری نداریم :لبخند؟؟


فرقش اینه که با توجه به قانون اول شی گرایی (کپسوله سازی) فیلد ها نباید در خارج از کلاس قابل دسترس باشند به چند دلیل

واقعیتش میخوام بدونم ستور دوم رو توی کلاس بنویسم (بدون تعریف متغییر) خود پروپرتی متغییر محسوب میشه؟؟
یعنی دوستور دوم عینا معادل ستور اوله یا نه؟؟

ممنون

مهرداد صفا
دوشنبه 14 اسفند 1391, 12:01 عصر
در رابطه با متغییر استاتیک :
فقط متغغیر استاتیک میشه دیگه با پروپرتی کاری نداریم :لبخند؟؟

واقعیتش میخوام بدونم ستور دوم رو توی کلاس بنویسم (بدون تعریف متغییر) خود پروپرتی متغییر محسوب میشه؟؟
یعنی دوستور دوم عینا معادل ستور اوله یا نه؟؟

ممنون


با سلام.
خود property در واقع یک procedure است که مقداری که به آن داده می شود به عنوان پارامتر به آن ارسال می شود و مقداری که از آن می گیریم مقدار بر گشتی تابع است، پس به عنوان متغیر محسوب نمی شود ولی در دستور دوم (auto-implemented property) به صورت خودکار یک backing فیلد توسط کمپایلر تعریف می شود تا مقدار در آن نگهداری شود، شبیه به دستور اول (regular property).
شما در صورتی از regular property استفاده می کنید که مثلا مقدار خصوصیت در زمان get نیاز به محاسبه دارد و یا در هنگام set باید تغییراتی با توجه به مقدار جدید اعمال شود. با این حساب دستورات بالا (صرفا در این مورد) تفاوتی با یکدیگر ندارند.