PDA

View Full Version : آموزش get , set



black_shadow
پنج شنبه 24 دی 1394, 13:03 عصر
سلام
ببخشید که تاپیک زدم سرچ سایت خرابه


میشه واسم این رو توضیح بدین
get
{
}
set
{
}

این اصلا واسه چی استفاده میشه؟
کاربردش چیه؟
نحوه استفادش چیه؟
چطوری استفاده میشه ؟
تو کتاب اقای هاشمیان نتونستم بفهمم

میشه با مثال قابل فهم واسم توضیح بدین مثال کاربردی باشه
تو گت باید چیکار کرد و تو ست چی؟

Mahmoud Zaad
پنج شنبه 24 دی 1394, 13:15 عصر
سلام
یک مثال خیلی ملموس: شما اگه یک کنترل رو انتخاب کنید و در پنجره Properties نگاه کنید یکسری ویژگی می بینید، این ویژگی ها با استفاده از get و set ایجاد شدن.
این ویژگی ها اکثراً قابل تنظیم (یعنی نوشتنی = set) و هم قابل استفاده در جاهای دیگه (خواندنی = get) هستند. مثلاً خاصیت Text یک فرم، این خاصیت رو میشه تنظیم کرد: this.Text="form1";
هم میشه ازش استفاده کرد: lebel1.Text = this.Text;

حالا شما هم می تونید برای خودتون یکسری Property تعریف کنید. مثلاً پاری وقتا نیازه که به یک متغیر در یک فرم دیگه دسترسی داشته باشیم راه اصولیش نوشتن یک نمونه از همین property ها هست.
یا مثلاً در یوزرکنترل ها اگه از این پراپرتی ها بنویسم اسم اون در پنجره Properties میاد و شما می تونید تنظیمش کنید.

اگه نیاز بود تا بیشتر توضیح بدم.

black_shadow
پنج شنبه 24 دی 1394, 13:22 عصر
داداش ممنون اگه میشه بیشتر توضیح بدین

Mahmoud Zaad
پنج شنبه 24 دی 1394, 15:38 عصر
فرض کنید یک فرم داریم که لیست اشخاص رو نشون میده، یک فرم دیگه داریم که جزئیات یک شخص رو نشون میده و میشه مشخصات فرد انتخاب شده رو در این فرم ویرایش کرد. حالا ما میخوایم اسم این فرد رو از لیست اشخاص (یعنی در فرم 1) به فرم جزئیات (فرم 2) انتقال بدیم. چه باید کرد؟

میایم در فرم 2 یه پراپرتی به صورت زیر تعریف می کنیم:

private string _esmeShakhs;

public string EsmeShakhs
{
get { return _esmeShakhs; }
set { _esmeShakhs = value; }
}

یعنی اول یه متغیر private تعریف می کنیم که فقط در خود فرم 2 قابل دسترس باشه و یک پراپرتی که در خارج از فرم 2 هم قابل دسترس باشه.

بعد در لود همین فرم مثلاً کد زیر رو می نویسیم:
label1.Text = _esmeShakhs;

و در فرم اول به صورت زیر مقدار دهی می کنیم:

private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.EsmeShakhs = textBox1.Text;
f2.Show();
}

همونطور که می بینید اسم پراپرتی که در فرم 2 تعریف کردیم در فرم 1 قابل دسترس هست در صورتی که متغیر _esmeShakhs که در فرم 2 تعریف کردیم در فرم 1 قابل شناسایی و دسترسی نیست.

این میشه یکی از کاربردهای پراپرتی ها. اما همونطور که می بینید در get که به معنی خواندن یا گرفتن هست میایم مقدار یک متغیر رو برمی گردونیم با return
در set هم که به معنی تنظیم کردن هست میایم مقدار یک متغیر رو در valueی پراپرتی تنظیم می کنیم.
یعنی هر جا لازم باشه با استفاده از پراپرتی EsmeShakhs مقدار متغیر _esmeShakhs رو در خارج از فرم می خونیم یا تغییرش می دیم.

یعنی به طور خلاصه با استفاده از پراپرتی ها از خارج از فرم (یا کلاس) به متغیر خصوصی داخل فرم (یا کلاس) دسترسی خواهیم داشت.