PDA

View Full Version : کمک در مورد Get وSet



hjran abdpor
شنبه 10 مرداد 1388, 18:27 عصر
اگه میشه در مورد get set که در برنامه ها ومخصوصا در کلاس ها مورد استفاده قرار میگیرد کمی توضیح بدهیئ .
اگه میشه یکم به زبان ساده مطرح کنید چون هر چی در موردشون خوندم متوجه نهشدم .
با تشکر

milade
شنبه 10 مرداد 1388, 18:59 عصر
درود
یه متغیر داریم :

Dim x As String
متد Set :

x = "Hi mialde ! "
متد Get :

Msgbox(x)
بر روی کلاس :


Dim Val
Public Property x As String
Get
Return val
EndGet
Set(byval value as string)
val=value
End Set
End Property


موفق باشید

بهنام بهمنی
شنبه 10 مرداد 1388, 19:04 عصر
در لینک زیر اطلاعات جالبی راجع به تفاوت Porperty and Attribute آمده که بنظرم برای شما مفید است:

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/ebd24595-2e9f-4f26-a9e8-7cbd5d002737

Rejnev
شنبه 10 مرداد 1388, 19:30 عصر
سلام به شما
این یک کلاس ساده است:




public class student
{
public string _name;
public int _code;
public int _mark;
public string Name
{
get
{
return _name;
}
set
{
_name=value;
}
}

public int Code
{
get
{
return _code;
}
}

public int Mark
{
set
{
if (value <= 20 && value >= 0)
_mark = value;
else
_mark = 0;
}
}

}




اگر در ویژوال استودیو این کلاس رو بسازی می بینی که _name و _code و _mark به رنگ آبی هستن.یعنی متغیر های کلاس یا اصطلاحا فیلدهای کلاس هستن
در برنامه نویسی حرفه ای هیچوقت این طور عمل نمیکنیم و می آیم و از property بجای متغیر استفاده میکنیم.مزیتی که این کار داره اینه که میتونیم روی داده ای که کاربر وارد میکنه کنترل بیشتری داشته باشیم.در مثال بالا Code , Name , Mark سه خصوصیت یا property هستند که
Code فقط خواندنی و Name خواندنی و نوشتنی و Mark فقط نوشتنی است.که در مورد آخر بر رسی میکنیم که کاربر مقدار خارج از محدوده وارد خصوصیت کلاس نکند.کلمه کلیدی value در واقع مقداری است که در طرف سمت راست مساوی هنگام مقدار دهی به خصوصیت میدهیم:


student s = new student();
s.Name = "ali";


ali یک value است
کدهای زیر ایجاد خطا میکنه چون به یک خصوصیت فقط خواندنی مقدار میدهیم و یک خصوصیت فقط نوشتنی را میخوانیم:


s.Code = 10;
this.Text = s.Mark.ToString();

Rejnev
شنبه 10 مرداد 1388, 19:33 عصر
در کلاس بالا بجای کلمه public از کلمه private استفاده کن تا کاربر به فیلد های _name , _code, _mark دسترسی نداشته باشه.:لبخندساده: