PDA

View Full Version : مبتدی: چرا برای یک فیلد پروپرتی تعریف میکنیم؟



alireza2220
یک شنبه 27 آذر 1390, 20:15 عصر
چرا برای یک فیلد پروپرتی تعریف میکنیم؟
مثال:
praivet string _fullname
public string fullname
get{}
set{}
چرا?

Hajivandian
یک شنبه 27 آذر 1390, 20:56 عصر
سلام، یکی از دلایلش می تونه این باشه که ما بخوایم یک سری عملیات رو قبل از انتصاب روی داده دریافتی اعمال کنیم.
مثال زیر رو در نظر بگیرید

int seconds;

public int minutes
{
get
{
return seconds/60;
}

set
{
seconds=value*60;
}
}

تو مثال بالا ما یه فیلد داریم که توش یه مقدار با عنوان ثانیه رو نگه می داریم
ولی هنگام دریافت مقدار از کاربر، یک مقدار با عنوان دقیقه از اون می گیریم
با متدهای get و set می تونیم روی داده خود کنترل داشته باشیم
البته این یه مثال بود ، نمیدونم متوجه شدی یا نه ولی چیز بهتری به ذهنم نرسید!

jmfnima
یک شنبه 27 آذر 1390, 21:19 عصر
خب این که شما فرمودین میشه با نوشتن یک تابع اینکار رو انجام داد .میشه بیشتر در این مورد توضیح بدین.

Hajivandian
یک شنبه 27 آذر 1390, 22:44 عصر
سلام، با تابع هم میشه این کار رو کرد ولی پروپرتی ها برای خوانایی بیشتر و راحتی کار ساخته شدن.
توی مثال قبل موقعی که یه مقدار رو به پروپرتی تخصیص می دیم، عملیات درج شده توی متد set اتفاق می افته:
minutes=10;
ولی اگر قرار بود با تابع بنویسیم، با فرض تعریف تابع GetSecond، هر بار باید کدی شبیه کد زیر رو استفاده می کردیم
seconds=GetSeconds(10);
مسلما کد اول راحت تر و خواناتره

MasoudAliAkbari
دوشنبه 28 آذر 1390, 00:37 صبح
دقیقا همونطوری که دوستمان فرمودند کار کردن با پروپرتی راحتتره
ولب توجه داشته باشید که کامپایلر نهایتا قسمت set را در پروپرتی به همان تابع تبدیل می کند ولی این از دید ما مخفی است چون قراره کار ما راحتتر بشه.